Generalização Abstrata

Em diagramas de classe, uma generalização abstrata é um relacionamento de dependência no qual existe um mapeamento entre o pai e o filho.

Uma generalização abstrata é quase como o relacionamento de generalização ou herança entre classes. Com a generalização abstrata, uma classe-pai força a classe-filha a herdar determinada funcionalidade para criar uma interface.

Nota: No C/C++, uma generalização abstrata é realizada por meio de operações virtuais puras. Uma classe-pai que contém uma operação virtual pura é chamada de classe-base abstrata. A classe-base abstrata nunca pode ser instanciada. Uma classe-filha deve substituir a operação virtual pura em sua declaração; caso contrário, ela não pode ser instanciada. A classe-base abstrata força uma interface de design em uma classe-filha.

Por exemplo, quando você visualiza uma classe C/C++ e uma generalização abstrata, uma classe-pai pode tornar-se uma interface ou um gabarito de design. A classe Vehicle é uma classe-pai que utiliza uma generalização abstrata. A classe Vehicle torna-se um gabarito de design ou interface para todos os seus filhos, forçando-os para utilizar determinadas operações. A classe-filha Boat herda várias operações da classe Vehicle. A classe Boat não pode ser implementada sem utilizar essas operações. Portanto, a classe Vehicle age como uma interface de design para todos os seus filhos.

Em diagramas de classe de visualização UML, uma generalização abstrata é mostrada pela diferenciação do título da classe de outras classes. Uma classe-pai que utiliza uma generalização abstrata possui um título de classe em letras em itálico. Além disso, todas as operações herdadas por seus filhos (operações virtuais puras) também aparecem em itálico.

A figura a seguir ilustra as diferenças entre um relacionamento de generalização normal e um relacionamento de generalização abstrata.

Generalização normal C/C++ Generalização abstrata C/C++
Uma generalização C/C++ regular é exibida. Uma generalização C/C++ abstrata é exibida.

Conceitos relacionados
Relacionamentos de Associação
Relacionamentos de Dependência
Relacionamentos de Generalização
Relacionamentos de Manifestação
Relacionamentos de Associação de Elemento Pertencente
Relacionamentos de Permissão
Adornos para Referências Não Resolvidas
Termos de uso | Feedback
(C) Copyright IBM Corporation 2004, 2005. Todos os Direitos Reservados.