o que é OO 1
O que significa ser Orientado a Objeto?
o que é OO 2
Conceitos básicos:
EncapsulamentoOcultação de informações e
implementaçõesRetenção de estadoIdentidade de objetoMensagens
o que é OO 3
ClassesHerançaPolimorfismoGeneralização
o que é OO 4
Exemplo: Hominóide se movendo num tabuleiro!
I
F
o que é OO 5
Regras:
1. Ir da posição I até F2. Andar em linha reta ou ‘curvas’ de
90o
3. Passa por todos os quadrados4. Não bater nas paredes (pareceria
idiota)5. Classes já existentes: grade e
homonóide
o que é OO 6
Interface do ‘Hominóide’:
Novo: Hominóide// cria uma nova instância
virarÀesquerda//vira o Hominóide no sentido
anti-horário em 90o
virarÀdireita//vira o Hominóide no sentido
horário// em 90o
o que é OO 7
…
avançar (semPularQuadrados: Inteiro, out avançarOK: boolean)
// mover o hominóide vários// quadrados no sentido apontado e// retornar OK se bem-sucedido
posição: Quadrado// retorna o quadrado atual
apontandoParaParede: Booleano// informa se o hominóide vai bater
o que é OO 8
Interface da ‘Grade’:
Novo: Grade// cria e retorna uma grade com
um// padrão ao acaso
iniciar: Quadrado// retorna o quadrado de início
finalizar: Quadrado// retorna o quadrado final
o que é OO 9
…inserirHominóide (hom: Hominóide,
posição: Quadrado, out inserirOK: Booleano)
// posiciona o hominóide na grade// determinada e na posição// especificada e retorna ok
exibir// mostra a grade como um padrão// sobre a tela
o que é OO 10
Programa OO:
var grade: Grade := Grade.Novo;var hom1: Hominóide :=
Hominóide.Novo;var inserirOK: Booleano;var avançarOK: Booleano;var iniciarQuadrado: Quadrado;const umQuadrado = 1;
o que é OO 11
…
iniciarQuadrado := grade.iniciar;grade.inserirHominóide (hom1,
iniciarQuadrado, out inserirOK);
if not inserirOKthen aborte tudo!;endif;
o que é OO 12
…// posiciona hominóide no sentido
corretorepeat 4 times max or until not
hom1.apontandoParaParedehom1.virarÀEsquerda;
endrepeat;
grade.exibir;hom1.exibir;
o que é OO 13
…repeat until hom1.posição = grade.finalizar
if hom1.apontandoParaParedethen hom1.virarÀEsquerda;
if hom1.apontandoParaParedethen hom1.virarÀDireita;
hom1.virarÀDireita;endif;
endif;hom1.avançar (umQuadrado, out avançarOK);hom1.exibir;
endrepeat;
o que é OO 14
“… é o agrupamento de idéias afins em uma unidade,
conceito esse que pode ser informado em uma única palavra”
1. Encapsulamento
Conceito de sub-rotina é um encapsulamento de instruções!
o que é OO 15
Encapsulamento OO:
“… é o pacote de operações e atributos oqual representa o estado em um tipo de objeto, de tal forma que o estado é acessível ou modificável
somente pela interface provida pelo encapsulamento”
o que é OO 16
Objeto hominóide: hom1
posiçãosentido
virarÀDireita
virarÀEsquerda
avançar
exibir
apontandoParaParede
posição
Operações Atributos
o que é OO 17
Visibilidade das operações e atributos:
PúblicosPrivados
a menos que explicitamente mencionado, as operações e atributos são considerados privados
o que é OO 18
2. Ocultação de informações e implementações
“… é a utilização do encapsulamento para restringir a visibilidade externa de certos detalhes de informações ou implementações, os quais são internos à estrutura de encapsulamento”
o que é OO 19
Frequentemente: Revela informações Oculta implementações
Por exemplo:- a operação posição informa a
posição, mas não sabemos como é armazenada internamente!
- sentido permanece oculto!
o que é OO 20
Benefícios da ocultação:
1. Localiza as decisões de desenho
2. Desacopla o conteúdo das informações da sua forma de representação
o que é OO 21
3. Retenção de Estado
Um objeto “memoriza” o seu estado (conjunto de valores que caracterizam a sua situação anterior/atual)
Por exemplo: o hominóide, constantemente, ‘sabe’ a sua posição e sentido de deslocamento (mecanismo interno!).
(sub-rotinas convencionais não possuem memória de suas execuções anteriores)
o que é OO 22
4. Identidade de Objeto
“… é a propriedade pela qual cada objeto (independentemente de sua classe ou seu estado) pode ser identificado e tratado como uma entidade distinta de software”
o que é OO 23
Objeto hominóide: hom1
posiçãosentido
virarÀDireita
virarÀEsquerda
avançar
exibir
apontandoParaParede
posição
Objeto
Identificador do Objeto
820657
o que é OO 24
var hom1: Hominóide := Hominóide.Novo;
Regras básicas:1. O mesmo identificador permanece
com o objeto por toda sua “vida”2. Dois objetos nunca podem ter o
mesmo identificador hom1 aponta para o ID (820657)
o que é OO 25
Atribuindo um objeto a outro:
var hom2: Hominóide := hominóide.Novo;// ID: 176290
hom1 := hom2;// ID ??
hom1 e hom2 passam a apontar para o mesmo objeto (hom1 desapareceu! – “coletor de lixo” deve remover o espaço ocupado)
o que é OO 26
5. Mensagens
“Uma mensagem é o veículo pelo qual um objeto remetente obj1 transmite a um objeto destinatário obj2 um pedido para o obj2 aplicar um de seus métodos.”
Obs: O obj2 pode ser o próprio obj1
o que é OO 27
Estrutura da mensagem:
1. O identificador do obj2 (o obj1 normalmente deve armazenar o ID do obj2!)
2. O nome da operação do obj2 que o obj1 deseja executar
3. Informações suplementares (argumentos) que o obj2 necessitar para a execução de sua operação
o que é OO 28
Remetente / cliente : objeto que envia a mensagem
Destinatário / servidor (serviço) : objeto que recebe a mensagem
Ex: hom1.virarÀDireita;
[call virarÀDireita (hom1);]
o que é OO 29
Estrutura da mensagem:Assinatura da operação alvo:
Nome da operação Lista de argumentos de entrada Lista de argumentos de saida (retorno)
hom1.avançar (in semPular, out avançarOK);
objetonome arg entrada arg de saída
mensagem
o que é OO 30
Papéis dos objetos em mensagens:
Remetente de uma mensagemDestinatário de uma mensagemIndicado por uma variável no interior
de outro objetoIndicado por um argumento passado
por uma mensagem (em linguagem OO pura os argumentos sempre são objetos!)
o que é OO 31
Tipos de mensagens:Informativa – fornece informações a
um objeto para que ele se atualizeInterrogativa – solicita que um objeto
revele alguma informação sobre si próprio
hom1.posiçãoImperativa – solicita a um objeto que
faça algo para si, outro objeto ou o meio ambiente
hom1.avançar
o que é OO 32
6. Classes
Uma classe é a matriz da qual são gerados objetos. Cada objeto tem a mesma estrutura e comportamento da classe que lhe deu origem. Se um obj pertence à classe C, dizemos que “obj é uma instância de C”.
o que é OO 33
Classe
obj1
obj2
obj3
Instanciação
127654
218654
417287
o que é OO 34
Classe é o que se desenha e programa
Objeto é o que se cria na hora da execução
o que é OO 35
“Memória” ocupada pelos objetos de uma classe C:
métodoB
métodoA
métodoC
métodoD
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
Obj
eto
1
Ob j
e to
2
Ob j
e to
3
Ob j
e to
4
Ob j
e to
5
Ob j
e to
6
Ob j
e to
7
o que é OO 36
Operações e atributos de instâncias de objetos
Operações e atributos de classe de objetos
Ex: objeto1.Novo
o que é OO 37
Memória ocupada pelos objetos e pela própria classe:
métodoB
métodoA
métodoC
métodoD
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
varXvarYvarZvarVvarW
id
Obj
eto
1
Ob j
e to
2
Ob j
e to
3
Ob j
e to
4
Ob j
e to
5
Ob j
e to
6
varPvarQvarR
métodoF
métodoE
Variáveisde classe
Métodos declasse
o que é OO 38
7. Herança
A herança é a habilidade que uma classe D possui de usar os atributos e operações de uma classe C, como se os mesmos tivessem sido definidos para ela.
C é uma superclasse de DD é uma subclasse de C
o que é OO 39
exemplo:
Aeronave
Planador
Rota: Ângulo
desviar
seCaboAcoplado: Booleana
soltarCaboDeReboque
o que é OO 40
8. Polimorfismo
(A)Polimorfismo é a habilidade pela qual uma única operação ou nome de atributo pode ser definido em mais de uma classe e assumir implementações diferentes
(B)Polimorfismo é a propriedade pela qual um atributo ou variável pode apontar para objetos de diferentes classes em momentos diferentes
o que é OO 41
Exemplo: classe Poligono
o que é OO 42
Exemplo (de A):
Polígono
Retângulo
área
Calcular Área
Calcular Área
Hexágono
…
Triângulo
Calcular Área
o que é OO 43
Exemplo (de B):
var p: Polígono;var t: Triângulo := Triângulo.Novo;var h: Hexágono := Hexágono.Novo;…If usuário diz OKthen p:=telse p:=hendif;…
o que é OO 44
9. Generalização
Generalização é a construção de uma classe C de forma que uma ou mais classes que ela utiliza internamente é fornecida somente em tempo de execução (quando o objeto da classe C é gerado).
o que é OO 45
Exemplo:
Classe ÁrvoreBalanceada <ClasseDoItemNó>
…var atualNó: ClasseDoItemNó :=
ClasseDoItemNó.Nova;…atualNó.imprimir;…
Top Related