Linguagem de Programação III

Propaganda
Linguagem de Programação III
Programação Orientada a Objetos
Unidade I
Prof. Hugo Sampaio
São Luís, MA
© Prof.Hugo Sampaio - 1
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 ?.
© Prof.Hugo Sampaio - 2
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.
© Prof.Hugo Sampaio - 3
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.
© Prof.Hugo Sampaio - 4
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.
© Prof.Hugo Sampaio - 5
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.
© Prof.Hugo Sampaio - 6
Linguagens de Programação OO
Ling. Orientadas a Objeto (LPOO)
Linguagem de
Programação
Ling. convencionais (LC)
A LPOO introduz novos conceitos e características, tais como:






Objetos,
Classes,
Instanciação,
Encapsulamento,
Herança,
Polimorfismo, etc.
© Prof.Hugo Sampaio - 7
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.
© Prof.Hugo Sampaio - 8
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.
© Prof.Hugo Sampaio - 9
Conceitos
 Objetos
 Métodos
 Classes
 Instanciação
 Herança
 Polimorfismo
 Classes Abstratas
© Prof.Hugo Sampaio - 10
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.
© Prof.Hugo Sampaio - 11
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
© Prof.Hugo Sampaio - 12
Objetos
Podemos um Objetos é constituido de três partes :
 Identificador (OID) – Identificação única do objeto
Dois 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.
© Prof.Hugo Sampaio - 13
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.
© Prof.Hugo Sampaio - 14
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
© Prof.Hugo Sampaio - 15
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
© Prof.Hugo Sampaio - 16
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.
© Prof.Hugo Sampaio - 17
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
© Prof.Hugo Sampaio - 18
Interface
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.
OBJETO
Interface
INTERACAO COM O
MEIO
© Prof.Hugo Sampaio - 19
Mensagens
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.
Mensagens
OBJETO
© Prof.Hugo Sampaio - 20
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.
© Prof.Hugo Sampaio - 21
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.
© Prof.Hugo Sampaio - 22
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.
© Prof.Hugo Sampaio - 23
Instâncias
CLASSE P
P3
P2
P1
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.
© Prof.Hugo Sampaio - 24
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.
© Prof.Hugo Sampaio - 25
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 subrotina.
© Prof.Hugo Sampaio - 26
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 ?
© Prof.Hugo Sampaio - 27
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.
© Prof.Hugo Sampaio - 28
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 uma
instância de C1.
© Prof.Hugo Sampaio - 29
Subclasses / Superclasses
Empregado
Características
Herdadas
Secretária
Nome:
ID:
Salário:
isMae?
Nome:
ID:
Salário:
Engenheiro
Nome:
ID:
Salário:
CREA
Motorista
Nome:
ID:
Salário:
Turno
© Prof.Hugo Sampaio - 30
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):
© Prof.Hugo Sampaio - 31
Herança Simples e Herança Multiplas
A Herança Múltipla: É o mecanismo que permite
com 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.
© Prof.Hugo Sampaio - 32
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.
© Prof.Hugo Sampaio - 33
Polimorfismo
Empregado
Gratificação()
Secretária
Gratificação()
Engenheiro
Gratificação()
Motorista
Gratificação()
Como fazer para calcular a gratificação, uma vez
que para cada tipo de empregado, temos um
calculo diferente ?
© Prof.Hugo Sampaio - 34
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.
© Prof.Hugo Sampaio - 35
Representação nos Grafos
Generalização (entre classes : a herança)
- generalização
- especialização
Esp.
Gen.
isa
Instanciação ( entre Objetos e Classes )
- instance-of
Agregação (entre objetos)
- part-of
© Prof.Hugo Sampaio - 36
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.
© Prof.Hugo Sampaio - 37
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.
© Prof.Hugo Sampaio - 38
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.
© Prof.Hugo Sampaio - 39
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 é conhecido
fora do objeto.
- Estado escondido: no qual o dado não é conhecido
fora do objeto.
© Prof.Hugo Sampaio - 40
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
© Prof.Hugo Sampaio - 41
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ça
6) Defina a concepção de um aplicativo qualquer
abstraindo todo o contexto baseado nos conceitos da
Orientação a Objeto.
© Prof.Hugo Sampaio - 42
Download