1 / 23

Perigos da herança e do polimorfismo

Perigos da herança e do polimorfismo. Abusos da herança:. Uso exagerado da herança! Conjuntos equivocados Hierarquia invertida Confusão de classe com instância Utilização inadequada. Conjuntos equivocados:. Aeronave. Asa. Cauda. Motor. Fuselagem. Conjuntos equivocados:. Aeronave.

kiora
Télécharger la présentation

Perigos da herança e do polimorfismo

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Perigos da herança e do polimorfismo Perigos

  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. 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 Gerente Correto ? Funcionário Perigos

  8. Hierarquia invertida Funcionário Gerente “Um membro da Diretoria é 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ávelv é 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. Caso 1: COP de operaçãodestinatária COP de objetodestinatário Perigos

  19. 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>.NovaPode 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

More Related