Precisa de alguns explicar com a hierarquia de OOAD “é uma”
-
21-09-2019 - |
Pergunta
Eu tenho comprado Análise e design orientados a objetos com aplicativos, na página 64 O parágrafo 2 explicou sobre "é uma hierarquia" como abaixo.
Em termos de hierarquia "é uma", uma abstração de alto nível é generalizada e uma abstração de baixo nível é especializada. Portanto, dizemos que uma classe de flores está em um nível mais alto de abstração do que uma classe de planta.
Pelo que entendi, acho que Plant é mais generalizada que a Flower então a classe de flores está em mais baixo nível de abstração que a planta.
Eu quero saber neste momento meu entendimento está correto ou o livro está correto? Por favor me esclareça.
Solução
Eu concordo, esta citação está errada. Pela definição aqui, a planta está em um nível mais alto de abstração que a flor: a definição está correta, os nomes no exemplo são transpostos.
Outras dicas
O exemplo de planta e flor para hierarquias IS-A é provavelmente o pior que já ouvi!
Um carro é um veículo. Um cachorro é um mamífero. Uma conta poupança é uma conta A (n). Todos esses são exemplos típicos e facilmente compreendidos.
O que você citou não parece certo. Eu teria entendido que a planta estava em um nível mais alto de abstração do que a flor, assumindo herda das flores da planta. Portanto,
Uma flor is a
Plantar
mas
Uma planta não é necessariamente uma flor
Eu não diria que a afirmação "uma flor é uma planta" é verdadeira, na minha opinião uma planta tem um Flor. Eu acho que há algum contexto faltando.
Eu acho que o autor do livro está explicando sobre hierarquias de herança aqui. Se uma entidade estiver no topo da hierarquia, ela é ou precisa ser mais generalizada (ou abstrata) do que as abaixo na hierarquia. É um design ruim ter uma entidade herdando de outra entidade, mas ser mais abstrata do que seus pais (traduzindo para uma classe abstrata herdando de uma classe concreta).