A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Perigos da herança e do polimorfismo

Apresentações semelhantes


Apresentação em tema: "Perigos da herança e do polimorfismo"— Transcrição da apresentação:

1 Perigos da herança e do polimorfismo

2 Abusos da herança: Uso exagerado da herança! Conjuntos equivocados
Hierarquia invertida Confusão de classe com instância Utilização inadequada Perigos

3 Conjuntos equivocados:
Aeronave Asa Cauda Motor Fuselagem Perigos

4 Conjuntos equivocados:
Aeronave Asa Cauda Motor Fuselagem Herança NÃO É Composição “Asa não é uma espécie de aeronave”! Perigos

5 … Asa Cauda Motor Fuselagem “Uma aeronave é uma
asa, uma cauda, um motor e uma fuselagem” Aeronave Perigos

6 “Uma aeronave é, simultaneamente, uma espécie de asa, uma espécie
Asa Cauda Motor Fuselagem “Uma aeronave é uma asa, uma cauda, um motor e uma fuselagem” Aeronave “Uma aeronave é, simultaneamente, uma espécie de asa, uma espécie de cauda, …” Perigos

7 Hierarquia invertida MembroDeDiretoria Correto ? Gerente Funcionário
Perigos

8 Hierarquia invertida Funcionário “Um membro da Diretoria Gerente
é uma espécie de Gerente, e um Gerente é uma espécie de Funcionário.” MembroDeDiretoria Perigos

9 Confundir classe com instância
Urso EspécieAmeaçada DeExtinção Panda Quais são as instâncias das 3 classes ? Perigos

10 Utilização inadequada (!)
Cubóide /volume volume ampliar (…) rodar (…) As operações de ampliar e rodar são válidas ? Quarto Perigos

11 O perigo do Polimorfismo
Promove concisão! Polimorfismo de operações Polimorfismo de variáveis Polimorfismo de mensagens Polimorfismo e generalidade Perigos

12 Polimorfismo de operações
“escopo de polimorfismo de uma operação op é o conjunto de classes sobre as quais é definida op. A classe A junto com todas suas subclasses forma um cone de polimorfismo, tendo A como vértice de polimorfismo” Perigos

13 Exemplo válido: Polígono Triângulo Retângulo Hexágono Perigos

14 Exemplo inválido: “Imprimir” Perigos

15 Polimorfismo de variáveis
“O escopo de polimorfismo de uma variável v é o conjuto das classes às quais os objetos referidos por v (durante a existência inteira de v) podem pertencer.” Perigos

16 Exemplos: var t: Triângulo permite que T aponte para qq Triângulo ou seus descendentes  OK Variável v aponte para Cavalo, Círculo ou Cliente  Não OK Aponte para Objeto, que está no topo de uma hierarquia de classes  OK Perigos

17 Polimorfismo em mensagens:
Na passagem de uma mensagem temos: objetoDestinatário.operaçãoDestinatária COP: Cone de Polimorfismo do Objeto e Cone de Polimorfismo da Operação Perigos

18 COP de operaçãodestinatária COP de objetodestinatário
Caso 1: COP de operaçãodestinatária COP de objetodestinatário Perigos

19 COP de operaçãodestinatária COP de objetodestinatário
Caso 2: COP de operaçãodestinatária COP de objetodestinatário Perigos

20 Exemplos: dispositivoDeFábrica.ligar
CASO 1: a msg aponta para Torneira, Motor ou Luz CASO 2: aponta para qq hardware: Torneira, Motor, Luz, Tubo, Tanque, Porta, Alavanca, … Perigos

21 Polimorfismo e generalidade
A classe parametrizada: ÁrvoreDeClasse <ClasseDeNó> pode gerar: árvoreDeNúmeroReal := ÁrvoreDeClasse <NúmeroReal>.Novo; e dentro da ÁrvoreDeClasse: nó := ClasseDeNó.Novo; Perigos

22 Problema: O desenhista não tem idéia da classe efetiva que será passada em run-time: ÁrvoreDeClasse<Fuselagem>.Nova ÁrvoreDeClasse<NoComplexo>.Nova ÁrvoreDeClasse<Animal>.Nova Pode haver problema se objeto da classe Animal receber comunicação de “imprimir a si próprio”! Perigos

23 Soluções: O usuário de classe parametrizada ser responsável e só aceitar classes dinâmicas que sejam compativeis (sic!) Definir “Condição de Guarda” (mecanismo da Linguagem Eiffel!) Perigos


Carregar ppt "Perigos da herança e do polimorfismo"

Apresentações semelhantes


Anúncios Google