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

Post on 18-Apr-2015

113 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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