Relacionamentos de Generalização

Na modelagem UML, um relacionamento de generalização é aquele no qual um elemento de modelo (o filho) tem como base outro elemento de modelo (o pai). Os relacionamentos de generalização são utilizados em diagramas de classe, componente, implementação e caso de uso para indicar que o filho recebe todos os atributos, operações e relacionamentos definidos no pai.

Para estar em conformidade com a semântica da UML, os elementos de modelo em um relacionamento de generalização devem ser do mesmo tipo. Por exemplo, um relacionamento de generalização pode ser utilizado entre agentes ou entre casos de uso; entretanto, ele não pode ser utilizado entre um agente e um caso de uso.

É possível incluir relacionamentos de generalização para capturar atributos, operações e relacionamentos em um elemento de modelo pai e, em seguida, reutilizá-los em um ou mais elementos de modelo filho. Como os elementos de modelo filho nas generalizações herdam atributos, operações e relacionamentos do pai, é necessário definir para o filho apenas os atributos, as operações ou os relacionamentos que sejam distintos do pai.

O elemento de modelo pai pode ter um ou mais filhos e qualquer elemento de modelo filho pode ter um ou mais pais. É mais comum ter um único elemento de modelo pai e vários elementos de modelo filho.

Os relacionamentos de generalização não possuem nomes.

Como as figuras a seguir indicam, um relacionamento de generalização é exibido no editor de diagrama como uma linha sólida com uma ponta de seta vazada que aponta do elemento de modelo filho para o modelo de elemento pai.

Único pai com um único filho

Único pai com vários filhos

Uma classe Child generaliza uma classe Parent. As classes Child1 e Child2 generalizam uma classe Parent.

Exemplo

A figura a seguir ilustra um aplicativo de e-commerce para um Web site que vende diversas mercadorias. O aplicativo possui uma classe InventoryItem que é uma classe-pai (também denominada uma superclasse). Essa classe contém os atributos, como Price, e operações, como setPrice, que todas as mercadorias utilizam.

Após definir a classe-pai, uma classe-filha (também denominada uma subclasse) é criada para cada tipo de mercadoria, como livros e DVDs. A classe livro utiliza os atributos e as operações na classe do inventário e, em seguida, inclui atributos como autor e operações como setAuthor. Uma classe DVD também utiliza os atributos e operações na classe do inventário, mas inclui atributos como fabricante e operações como setManufacturer, que são diferentes daquelas na classe livro.

Esta é uma ilustração do exemplo descrito no parágrafo anterior.
Tarefas relacionadas
Especificando Relacionamentos em Diagramas

Feedback