top of page

VI RELAÇÕES ENTRE CLASSES DE ANÁLISE

O diagrama de classes é um dos principais diagramas da UML, representa a estrutura do sistema.
O diagrama de classes fornece uma representação estática da colaboração por meio de relacionamentos. Os relacionamentos são utilizados no diagrama de classes que é refinado incrementalmente.
São apresentadas as seguintes relações:
- Associação (mais comum),
- Agregação (um tipo de associação),
- Generalização/especialização.



ASSOCIAÇÃO
É uma relação entre duas classes significando que os objetos destas classes possuem uma ligação. Por exemplo, a figura abaixo representa um professor leciona uma disciplina.

É possível designar que uma quantidade objetos de uma classe se relacionam com uma quantidade de objetos de outra classe por meio da notação de multiplicidade. As multiplicidades são colocadas nos extremos das linhas que representam as relações.
Navegabilidade
As associações podem opcionalmente direcionadas.

Para representar uma associação bidirecional, navegável nos dois sentidos, utiliza-se uma flecha bidirecional.

Se não há definição sobre a navegabilidade pode-se deixá-la não-especificada. Neste caso, não se deve utilizar flechas.

Papéis
Podemos associar papéis às associações para clarificar as responsabilidades dos objetos participantes.



Associação reflexiva

Os objetos de uma classe podem se relacionar com objetos da mesma classe. Por exemplo, uma relação do tipo pai-filho ou chefe-empregado cada objeto desempenha um papel diferente. Neste tipo de associação é freqüente a utilização de papéis ao invés de nome de associação para evitar ambigUidades na leitura.



Classes associativas

Quando uma relação associativa possui atributos próprios pode-se criar uma classe associativa. Estas classes são úteis quando queremos armazenar o histórico de uma associação (relacionamentos que ocorrem e interessam serem salvos).
Algumas características das classes associativas:
- Classes associativas são comuns em relações de multiplicidade *:*, embora não seja uma regra definitiva.
- A linha que representa a associação não é nomeada, o nome da classe associativa deve ser suficiente para identificar a relação.
- Classes associativas podem estar relacionadas a outras classes.



Relações Ternárias

É possível representar em UML relações entre objetos de três ou mais classes.

Levantamento das associações
Normalmente as associações vêem as regras do negócio, dos requisitos funcionais e dos diagramas de interação.



AGREGAÇÃO

É um caso especial de associação utilizada para representar relacionamentos de pertinência (“parte de”). Permite representar o fato que um objeto ou mais objetos de uma classe fazem parte de um objeto de outra classe.
A agregação representa uma ligação entre o objeto o todo (a janela) e as partes (Botão, ComboBox, ScrollBar). Um comportamento que se aplica ao todo se propaga as partes, por exemplo, ao movimentar a janela, todos seus elementos de deslocam também.

Notação

Podem-se incluir nomes, papéis, multiplicidades e navegabilidades, enfim aceita todos os adornos de uma relação de associação.

Multiplicidade

Frequentemente será 1 do lado da classe todo visto que um objeto normalmente é parte de um só objeto.

Tipos de agregações

Composição (composite aggregation)
É uma agregação de fato, o todo é composto pelas partes. Existe uma relação forte entre o todo e as partes, pois quando o todo é destruído as partes também o serão, ou seja, a eliminação do todo se propaga para as partes.

Levantamento

A identificação de agregações pode ser feita a partir de:
- Decomposição: quando uma classe torna-se muita complexa ou extensa podemos dividi-la em várias classes que comunicam entre si.
- Composição: identifica-se um conjunto de objetos que reunidos formam um objeto maior.
- Ppartes comuns: se duas ou mais classes apresentam um conjunto de atributos semelhantes podemos agrupá-los num objeto desde que tenham uma identidade.



GENERALIZAÇÃO

A relação de especialização é utilizada quando um conjunto de classes compartilha comportamentos e atributos, pode-se então generalizá-las agrupando seus comportamentos e atributos comuns.

Hierarquia de classes

Nas classes base colocamos os atributos e operações que são comuns a todas as classes derivadas, evita-se redundância e facilita-se reutilização.

Levantamento de generalizações

Basicamente, há duas maneiras de se identificar generalizações:
- Identificação de partes comuns: a partir de classes específicas tenta-se estabelecer classes genéricas.
- Síntese de classes base: pode-se iniciar a concepção a partir de classes abstratas tentando especializá-las.

Qualidade de uma classificação

Estável: os critérios de classificação não mudam ao longo do tempo.
Extensível: é fácil de incluir novas classes derivadas na hierarquia
Não classificar os objetos em função de critérios que caracterizam seus estados ou critérios muito vagos.

Herança múltipla

Uma classe é derivada de mais de uma classe base. Ocorre perda conceitua,l pois uma classe base não representa um caso geral completo da classe derivada, ela representa uma parte do conceito representado na classe derivada.

© 2023 by BLACK BARBY

bottom of page