Diretriz: Generalização no Modelo de Análise de Negócios
Muitos seres ou objetos da vida real apresentam propriedades comuns. Esta diretriz mostra como modelar as comunidades por meio de relacionamentos de generalização do Modelo de Análise de Negócio.
Relacionamentos
Descrição Principal

Explicação

Muitos seres ou objetos da vida real apresentam propriedades comuns. Por exemplo, cachorros e gatos são animais. As classes também podem ter propriedades comuns. As relações desse tipo entre classes podem ser esclarecidas por meio de uma generalização. Extraindo as propriedades comuns para suas próprias classes, será mais fácil modificar o modelo de negócios no futuro.

Uma classe que herda características gerais de outra classe chama-se descendente. A classe da qual o descendente é herdeiro chama-se ascendente. Uma generalização mostra que uma classe é herdada de outra. Isso significa que a definição do ascendente, incluindo qualquer atributo ou operação, também é válida para o descendente. As relações do ascendente também são herdadas.

A generalização pode ocorrer em vários estágios, o que possibilita a modelagem de hierarquias de herança complexas e com vários níveis, apesar de o número de níveis ser restrito para que o entendimento seja mais fácil. As propriedades gerais são colocadas na parte superior da hierarquia de herança, ao passo que as especiais ficam na parte inferior da hierarquia. Em outras palavras, você pode usar o relacionamento de generalização para modelar especializações de um conceito mais geral.

Exemplo:

Os passageiros que chegam ao check-in do aeroporto trazem diferentes tipos de bagagem, Bagagem Normal, Bagagem de Mão e Bagagem Especial. Do ponto de vista da companhia aérea, elas têm algumas propriedades comuns, além de serem bagagens, cada bolsa tem um proprietário e um peso, por exemplo. Essas propriedades comuns podem ser modeladas pelos atributos e operações em uma classe separada denominada Bagagem. Bagagem Normal, Bagagem de Mão e Bagagem Especial serão herdadas dessa classe.

Diagrama descrito no texto associado.

As classes Bagagem Normal, Bagagem de Mão e Bagagem Especial têm propriedades comuns. São especializações do conceito geral de Bagagem.

Uma classe pode herdar várias outras classes; isso é chamado de "herança múltipla" - apesar de normalmente só herdar uma. Se a classe herda várias classes, é importante verificar como as associações, os atributos e as operações são denominados nos ascendente. Se o mesmo nome aparece em vários ascendentes, você deve descrever o que ele significa para a classe herdante específica.

Classes Concretas e Abstratas

Uma classe que existe apenas para que outras classes possam herdá-la é uma classe abstrata. Uma classe abstrata nunca é instanciada. Entretanto, um objeto de uma classe que herda uma classe abstrata está de acordo com sua própria descrição e a descrição da classe herdada. As classes que são instanciadas no negócio são classes concretas.

Nesse contexto, o significado de "abstrato" é completamente diferente do significado comum. Algo pode muito bem ser abstrato no sentido comum da palavra sem ser representado por uma classe abstrata. As lições de escola são fenômenos, ou conceitos, abstratos porque não podem ser tocados. Entretanto, se você modelasse as tarefas escolares, uma lição provavelmente seria semelhante a uma classe concreta, ou seja, uma classe que é instanciada. Da mesma maneira, os fenômenos concretos como, por exemplo, produtos e pessoas, podem produzir classes abstratas, se tiverem propriedades em comum com outras classes.

Uso

A finalidade principal de usar a herança é chegar a um modelo de objetos que acomode a mudança. Entretanto, a herança deve ser usada com cuidado:

  • A herança é "somente" uma maneira de estruturar a descrição. Você visualiza os fenômenos que têm algumas propriedades em comum.

Quando isso ocorre, você ainda precisa encontrar um funcionário capaz de realizar o trabalho do ascendente e do descendente sempre que uma classe descendente for instanciada.

  • Use generalizações somente entre classes do mesmo estereótipo.

Como diferentes estereótipos de classe têm diferentes finalidades, a generalização de uma classe de um estereótipo para uma classe de outro estereótipo não faria sentido. Se você permitir que uma classe de trabalhador de negócios herde uma entidade de negócios, por exemplo, o trabalhador de negócios se tornaria um tipo de híbrido.