O que é OO1 O que significa ser Orientado a Objeto?
Transcript of O que é OO1 O que significa ser Orientado a Objeto?
![Page 1: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/1.jpg)
o que é OO 1
O que significa ser Orientado a Objeto?
![Page 2: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/2.jpg)
o que é OO 2
Conceitos básicos:
EncapsulamentoOcultação de informações e
implementaçõesRetenção de estadoIdentidade de objetoMensagens
![Page 3: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/3.jpg)
o que é OO 3
ClassesHerançaPolimorfismoGeneralização
![Page 4: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/4.jpg)
o que é OO 4
Exemplo: Hominóide se movendo num tabuleiro!
I
F
![Page 5: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/5.jpg)
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
![Page 6: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/6.jpg)
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
![Page 7: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/7.jpg)
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
![Page 8: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/8.jpg)
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
![Page 9: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/9.jpg)
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
![Page 10: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/10.jpg)
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;
![Page 11: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/11.jpg)
o que é OO 11
…
iniciarQuadrado := grade.iniciar;grade.inserirHominóide (hom1,
iniciarQuadrado, out inserirOK);
if not inserirOKthen aborte tudo!;endif;
![Page 12: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/12.jpg)
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;
![Page 13: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/13.jpg)
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;
![Page 14: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/14.jpg)
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!
![Page 15: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/15.jpg)
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”
![Page 16: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/16.jpg)
o que é OO 16
Objeto hominóide: hom1
posiçãosentido
virarÀDireita
virarÀEsquerda
avançar
exibir
apontandoParaParede
posição
Operações Atributos
![Page 17: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/17.jpg)
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
![Page 18: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/18.jpg)
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”
![Page 19: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/19.jpg)
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!
![Page 20: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/20.jpg)
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
![Page 21: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/21.jpg)
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)
![Page 22: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/22.jpg)
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”
![Page 23: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/23.jpg)
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
![Page 24: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/24.jpg)
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)
![Page 25: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/25.jpg)
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)
![Page 26: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/26.jpg)
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
![Page 27: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/27.jpg)
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
![Page 28: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/28.jpg)
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);]
![Page 29: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/29.jpg)
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
![Page 30: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/30.jpg)
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!)
![Page 31: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/31.jpg)
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
![Page 32: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/32.jpg)
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”.
![Page 33: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/33.jpg)
o que é OO 33
Classe
obj1
obj2
obj3
Instanciação
127654
218654
417287
![Page 34: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/34.jpg)
o que é OO 34
Classe é o que se desenha e programa
Objeto é o que se cria na hora da execução
![Page 35: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/35.jpg)
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
![Page 36: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/36.jpg)
o que é OO 36
Operações e atributos de instâncias de objetos
Operações e atributos de classe de objetos
Ex: objeto1.Novo
![Page 37: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/37.jpg)
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
![Page 38: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/38.jpg)
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
![Page 39: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/39.jpg)
o que é OO 39
exemplo:
Aeronave
Planador
Rota: Ângulo
desviar
seCaboAcoplado: Booleana
soltarCaboDeReboque
![Page 40: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/40.jpg)
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
![Page 41: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/41.jpg)
o que é OO 41
Exemplo: classe Poligono
![Page 42: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/42.jpg)
o que é OO 42
Exemplo (de A):
Polígono
Retângulo
área
Calcular Área
Calcular Área
Hexágono
…
Triângulo
Calcular Área
![Page 43: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/43.jpg)
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;…
![Page 44: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/44.jpg)
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).
![Page 45: O que é OO1 O que significa ser Orientado a Objeto?](https://reader035.fdocumentos.tips/reader035/viewer/2022062312/552fc130497959413d8d4bfc/html5/thumbnails/45.jpg)
o que é OO 45
Exemplo:
Classe ÁrvoreBalanceada <ClasseDoItemNó>
…var atualNó: ClasseDoItemNó :=
ClasseDoItemNó.Nova;…atualNó.imprimir;…