© Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I...

42
© Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA

Transcript of © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I...

Page 1: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 1

Linguagem de Programação IIIProgramação Orientada a Objetos

Unidade I

Prof. Hugo SampaioSão Luís, MA

Page 2: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 2

O que é POO ?

A POO (Programação Orientada a Objeto), baseia-

se no uso de objetos (tudo é tratado como um

objeto) definidos em sua respectiva classe.

Objetos possuem propriedades e características e

interagem entre si por meio de mensagens.

Porque POO ?.

Page 3: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 3

O Paradigma da POO

A programação orientada a objetos surge para possibilitar aos desenvolvedores :

- Velocidade na prototipagem de sistemas;

- Ambiente de desenvolvimento perfeito;

- Reutilização de códigos;

- Modularidade no desenvolvimento

- Abstração do mundo real.

Page 4: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 4

O Paradigma da POO

A POO propõe um certo relacionamento entre dados e códigos que surge como representação fiel dos objetos do mundo real.

Desta forma, é importante observar que na POO dados e código, caminham juntos surgindo a idéia de um único corpo. Assim os “Objetos encapsulam dados e códigos”

Porém, é importante lembrar que embora tratados de forma igual, apenas os códigos de um objeto pode manipular os seus dados.

Page 5: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 5

Objetivo da POO

Alem de um desenvolvimento mais fácil, a POO tem como objetivo :

Combinar dados e códigos encapsulados em uma entidade que representa um determinado tipo na abstração das informações no contexto do desenvolvimento.

Page 6: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 6

Objetivo da POO

A POO propõem uma nova maneira de conceber programas, pela introdução de novos conceitos e características, tais como: Objetos, Classes, Instanciação, Encapsulamento, Herança, Polimorfismo, etc.

Page 7: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 7

Linguagens de Programação OO

A LPOO introduz novos conceitos e características, tais como:

Objetos, Classes, Instanciação, Encapsulamento, Herança, Polimorfismo, etc.

Linguagem de Programação

Ling. Orientadas a Objeto (LPOO)

Ling. convencionais (LC)

Page 8: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 8

Surgimento da POO

Influenciados pela Linguagem SIMULA (anos 60), derivada do ALGOL e desenvolvida no Centro Norueguês de Computação, por Kristen Nygaard e Ole-Johan Dahl,os cientistas do Xerox Palo Alto Research Center (PARC) iniciou um trabalho que resultou na linguagem SmallTalk.

A SmallTalk (anos 70), foi a primeira linguagem autêntica orientada a objetos.

Cada elemento do SMALLTALK é tratado como sendo um objeto. Esta linguagem é puramente OO.

Page 9: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 9

Algumas aplicações

Desenvolvimento de Interfaces Gráficas com o

Usuário. Principalmente a programação em ambiente

do Macintosh Apple, Windows, etc.

Aplicada na Engenharia de Software, Sistemas

Distribuídos, Inteligência Artificial, e Banco de Dados.

A POO pode ser estendida para Métodos de Análise

de Sistemas e Desenvolvimento de Sistemas.

Page 10: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 10

Conceitos

Objetos Métodos Classes Instanciação Herança Polimorfismo Classes Abstratas

Page 11: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 11

Objetos

POO é definida em torno da noção central de Objeto: O domínio das aplicações é definido em termos de objeto. Os desenvolvedores identificam e descrevem todos os objetos do domínio.

O que é um Objeto ?

Um objeto é uma abstração de um elemento (entidade) do mundo real. É algo que tem um limite bem definido.

Ex. : Um arquivo, Um gato, um Funcionário,uma cadeira,

Uma conta bancária, etc.

Page 12: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 12

Objetos

Uma definição formal de um objeto é :

Um Objeto é uma entidade lógica que contém dados e código para manipular esses dados.

Cada Objeto tem características particulares que constituem as propriedades deste objeto.

Ex. : A cor da cadeira ( um objeto ) é azul A altura do jogador (um objeto) é 10

Page 13: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 13

Objetos

Podemos um Objetos é constituido de três partes :

Identificador (OID) – Identificação única do objetoDois objetos O1 e O2 são idênticos se possuem o mesmo OID.

Estados (ou Informações)Propriedades e valores atuais para cada uma das Prop.

Ex. : Em um objeto CARRO temos : cor = AZUL anoFab = 2004

Dois objetos são iguais se seus estados são iguais.

Page 14: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 14

Objetos

Comportamento (Ação)

O comportamento de um objeto é o modo como ele age e reage. Ele é definido pelo conjunto de operações que podemos executar no objeto.

As instruções das ações são dadas em procedimentos chamados de métodos de execução dessas ações.

Um método selecionado será aplicado ao objeto para executar a ação desejada.

Page 15: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 15

Métodos

Métodos são conjuntos de operações para verificar e ou manipular as propriedades (estado) de um objeto.

Ex.: Para o objeto CARRO :

getANO() return(anoFab)

setCOR (C) cor C

Page 16: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 16

Métodos

Ex. : O Objeto Professor :

Dados (Estado ) nome : Roberto departamento : Informática salário : 1.000

Métodos (Comportamento ) dept (): return(departamento) setNome (n): nome n

Interação

Page 17: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 17

Encapsulamento

Os Dados (Estados) e os Métodos

(Comportamentos) que manipulam um objeto são

agrupados (encapsulados) na mesma entidade (o

objeto).

Detalhes de Implementação interna são

Escondidos e o acesso ao objeto é feito via a

interface do objeto.

Page 18: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 18

Interfaces

Através dos métodos, interagimos com o objeto solicitando e/ou alterando o seu estado interno.Esta é a única forma de interagirmos com o interior do objeto.

Isto nos dá uma idéia de “caixa preta” , ou seja a forma como os dados são trabalhados internamente, não tem muito significado para o usuário e sim o resultado da ação solicitada.

Para interagimos com o objeto e este como o mundo externo, utilizamos um conjunto de metodos que representa a interface do objeto

Page 19: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 19

Interface

Interface

INTERACAO COM O MEIO

OBJETO

Interface: É o conjunto dos métodos do objeto.

A Interface permite um alto grau de abstração.

Ela especifica a interação do objeto com o

mundo externo.

Page 20: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 20

Mensagens

OBJETOMensagens

Os objetos são solicitados a executar algo através de mensagens.

As Mensagens são sincronizadas: O método que está enviando a mensagem não é executado até que o método que executa a mensagem termine.

Page 21: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 21

Classes

Os objetos são diferentes um dos outros pelas suas características (propriedades e metodos).

Os objetos podem ser classificados por características, .

Para gerarmos um objetos, necessitamos dizer quais as suas características e portanto nos baseamos em um determinado “molde”.

A esse “molde” chamamos na POO de Classes do Objeto.

Page 22: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 22

Classes

A Classe é, portanto, a descrição de uma família de objetos

que tem a mesma estrutura (propriedades)

e o mesmo comportamento (método).

Uma classe possui dois componentes:

Componente Estático : Dados e

Componente Dinâmico : Procedimentos

(Métodos)

A classe é uma entidade conceitual que descreve o objeto.

Sua definição serve como um modelo para a construção da

sua representação física.

Page 23: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 23

Classes

O objeto Homem,(por exemplo), pode ser “moldado” pela classe pessoa. Uma cadeira pela classe moveis.Um fusca pela classe carro, etc.

Desta forma uma classe pode gerar vários objetos, tendo todos eles as mesmas características.

Na POO definimos as classes dos objetos e utilizamos estas classes para gerar objetos. Um objeto gerado será conhecido como uma Instância da Classe geradora.

Page 24: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 24

Instâncias

CLASSE P

P1P2P3

Onde :

P – Classe do Objeto P

P1,P2,P3 – Instâncias da classe P (Objetos)

Obs. : Cada instância da classe P terá seus próprios dados independente dos outros.

Page 25: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 25

Resumo

Objeto

É uma entidade fechada que possui dados (características) e métodos (operações ou ações).

Método

É uma sub-rotina interna no objeto que informa como executar uma ação.

Classe

É um recipiente para construir objetos. Ela sabe as variáveis que estão no objeto e detém os métodos para cada objeto.

Page 26: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 26

Resumo

Instância

É um objeto que detém os dados e a referência (ponteiro) para as classes . A referência é importante, já que a classe possui os métodos.

Mensagem

Perguntar a um objeto alguma coisa é chamado de: “envio de mensagem.” Isto é similar a solicitar uma sub-rotina.

Page 27: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 27

Herança

Objetos definidos pela mesma classe, pode apresentar um comportamento especifico.

Observe :

Se temos a classes : Moveis

Esta classe pode instanciar uma cadeira e uma mesa, porém a propriedade : Num de gavetas não se aplica aos dois objetos. Apenas a mesa.

Assim como fazer para instanciar objetos com atributos diferentes de um mesma classe ?

Page 28: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 28

Herança

Uma forma bastante utilizada na POO esta relacionada com o conceito de herança.

Classes mais especificas são modeladas partindo de uma classe mais genérica e assim “herdando” todo as suas caracteristicas.

No nosso exemplo, teríamos a classe : Moveis (mais genérica) e as sub-classes : CMesa e CCadeira ( cada uma com suas particularidade, podendo assim gerar seus objetos que “herdam” as características mais gerais da classe moveis.

Page 29: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 29

Subclasses / Superclasses

Herança é o mecanismo de transmissão das propriedades de uma classe (a superclasse) para outra (a subclasse).

C2 herda de C1 (C2 é subclasse de C1)

Uma instância de C2 é considerada também umainstância de C1.

Page 30: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 30

Subclasses / Superclasses

Empregado

Nome:ID:Salário:

Motorista

Nome:ID:Salário:Turno

Secretária

Nome:ID:Salário:isMae?

Engenheiro

Nome:ID:Salário:CREA

Características

Herdadas

Page 31: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 31

Herança Simples e Herança Multiplas

A relação de herança liga uma classe a sua superclasse

O termo Superclasse refere-se a todas as classes, as quais uma classe herda.

Ex.: A Superclasse (do aspirador ) = {Eletrodoméstico, Equipamento}

Em um relacionamento de herança simples, cada classe tem apenas uma superclasse (direta):

Page 32: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 32

Herança Simples e Herança Multiplas

A Herança Múltipla: É o mecanismo que permitecom que a subclasse herde de mais de uma superclasse.

Herança múltipla permite uma melhor organização

dos objetos, pois evita redundâncias (de

propriedades e

de métodos).

No entanto, o seu uso é complicado, já que existe o problema de conflitos.

Page 33: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 33

Polimorfismo

Frequentemente temos a necessidade de redefinir um método herdado dando-lhe um novo código, dependendo das caracteristicas da sua subclasse.

O Polimorfismo é o uso de um único nome para definir varias formas distintas.

Page 34: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 34

Polimorfismo

Empregado

Gratificação()

Motorista

Gratificação()

Secretária

Gratificação()

Engenheiro

Gratificação()

Como fazer para calcular a gratificação, uma vez que para cada tipo de empregado, temos um calculo diferente ?

Page 35: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 35

Polimorfismo

A seleção do método pode ser feita pelo sistema, durante a execução (o dynamic binding). Seja E o conjunto dos empregados e e um empregado, vamos calcular a gratificação de todos os empregados:Na PE escrevemos:

para cada e em E faça case tipo(e):secretária: gratificação1(e)engenheiro: gratificação2(e)motorista: gratificação3(e)

Na POO escrevemos:para cada e em E do gratificação(e)

Polimorfismo é um poderoso mecanismo para compartilhar e reutilizar o conhecimento.

Page 36: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 36

Representação nos Grafos

Generalização (entre classes : a herança)

- generalização

- especialização

Instanciação ( entre Objetos e Classes )

- instance-of

Agregação (entre objetos)

- part-of

Gen.isa

Esp.

Page 37: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 37

Metaclasse

Metaclasses:

Uma classe geradora de outras classes. Ela agrupa

métodos aplicados a uma classe e a estrutura

comum de dados de todas as classes.

Ex.: métodos aplicados à classe:

- Criação e destruição de instâncias;

Para evitar a regressão ao infinito na criação de metaclasses, a noção da classe e da metaclasse foi generalizada a uma classe: a classe Object.

Page 38: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 38

Metaclasse

Desta forma todo objetos descende da classe

Object.

A classe Object torna-se a raiz do gráfico de

herança (isa), e fornece as propriedades comuns

dos objetos, tais como : OID, o método new

(objeto), o método delete (objeto), etc.

Page 39: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 39

Classes Abstratas

São Superclasses que não geram instâncias.

Elas apenas definem métodos (chamados de protocolos) que todas as subclasses devem implementar.

As superclasses abstratas são geralmente incompletas.

Classes Abstratas são uma convenção útil, mas não são comuns a todas as LPOO.

Page 40: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 40

O Desenvolvimento OO

1) Defina uma hierarquia de concepção, fazendo primeiro as abstrações. (identifique as classes)

2) Defina o protocolo de classes: O que a classe faz e como ela faz?

3) Defina o estado, o dado.- Estado visível: no qual o dado é conhecidofora do objeto.- Estado escondido: no qual o dado não é conhecido fora do objeto.

Page 41: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 41

O Desenvolvimento OO

Class CEmpregado

Nome:ID:Salário:

GetNome()getIdade()getSalario()setSalario()setNome() ...

Obj.Empregado

Class CPintor extende CEmpregado

Especialidade:gratificacao:

setGratif()getIdade()...

Obj.Pintor

Page 42: © Prof.Hugo Sampaio - 1 Linguagem de Programação III Programação Orientada a Objetos Unidade I Prof. Hugo Sampaio São Luís, MA.

© Prof.Hugo Sampaio - 42

Exercício

1) O que é um objeto ?2) O que é uma classe ?3) Defina o conceito de encapsulamento.4) Explique o que é herança na POO.5) Dê exemplo real de Classes, objetos e Herança6) Defina a concepção de um aplicativo qualquer

abstraindo todo o contexto baseado nos conceitos da Orientação a Objeto.