o que é oo1 o que significa ser orientado a objeto?

45
o que é OO 1 O que significa ser Orientado a Objeto?

Upload: internet

Post on 18-Apr-2015

113 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: O que é OO1 O que significa ser Orientado a Objeto?

o que é OO 1

O que significa ser Orientado a Objeto?

Page 2: O que é OO1 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

Page 3: O que é OO1 O que significa ser Orientado a Objeto?

o que é OO 3

ClassesHerançaPolimorfismoGeneralização

Page 4: O que é OO1 O que significa ser Orientado a Objeto?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

o que é OO 41

Exemplo: classe Poligono

Page 42: O que é OO1 O que significa ser Orientado a Objeto?

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?

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?

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?

o que é OO 45

Exemplo:

Classe ÁrvoreBalanceada <ClasseDoItemNó>

…var atualNó: ClasseDoItemNó :=

ClasseDoItemNó.Nova;…atualNó.imprimir;…