Conjunto de Generalização e PowerType

Generalização

Uma generalização é um relacionamento que podemos chamar de "é um tipo de", onde objetos gerais (no exemplo abaixo, Produto) se relacionam com objetos mais específicos do mesmo tipo (Guitarra, Violão). No exemplo, pode-se dizer que Guitarra e Violão são um tipo de Produto.
Uma generalização define uma herança, tal que uma classe refina, isto é, especializa  detalhes sobre a classe mais geral. A classe generalizada é freqüentemente chamada de superclasse, e a classe especializada  subclasse.  Todos os atributos  e operações da classe generalizada que tem visibilidade publica e protegida, estão disponíveis para a subclasse. Uma generalização tem um triangulo apontando para a superclasse.

Conjunto de generalização

UML oferece uma característica para organizar diferentes relacionamentos entre uma classe pai e uma classe filha. O conjunto de generalização define as regras para a partição da superclasse. Uma superclasse pode ter um ou mais conjuntos de generalizações para refletir o fato que, classes filhas podem parecer com o pai de maneiras diferentes. Todos os conjuntos de generalizações tem um atributo para indicar se eles podem sobrepor (overlap) com outras classes. Sobrepor significa que qualquer subclasse no relacionamento de herança pode herdar mais de uma fonte (isto é, pode usar herança múltipla com uma superclasse comun na árvore de herança). O conjunto de generalização tem um atributo indicando se o conjunto esta completo. Se ele esta completo, isso significa que todas as subclasses foram especificadas e que nenhuma subclasse mais pode ser criada.

Conjunto de generalização

 

Powertype

Mecanismo para modelar classes feitas de subclasse. Um powertype pode ser especificado através da indicação do nome da superclasse precedida por uma chaves no relacionamento de generalização. Dependendo do powertype, a classe pode herdar diferentes atributos e operações.

powertype