Tipos de relacionamentos UML: associação, dependência, generalização
⚡ Resumo Inteligente
Os relacionamentos UML conectam os aspectos estruturais, comportamentais e de grupo.ping Elementos de um modelo, mostrando como os objetos dependem uns dos outros durante a execução. Este recurso explica associação, dependência, generalização, realização, composição e agregação, com notação e exemplos práticos para cada tipo.

O que é relacionamento UML?
Relacionamentos em UML são usados para representar uma conexão entre fatores estruturais, comportamentais ou de grupo.ping Um elemento ou relação, também chamado de vínculo, descreve como duas ou mais coisas podem se relacionar durante a execução de um sistema. Os tipos de relacionamento em UML são: Associação, Dependência, Generalização e Realização.
Vamos estudá-los em detalhes
Tipos de relacionamentos de diagrama de classes UML
Associação
É um conjunto de links que conecta elementos do modelo UML. Também define quantos objetos participam dessa relação.
Dependência
Numa relação de dependência, como o nome sugere, dois ou mais elementos dependem um do outro. Neste tipo de relacionamento, se fizermos uma alteração em um elemento específico, é provável que todos os outros elementos também sejam afetados pela alteração.
Generalização
Também é chamado de relacionamento pai-filho. Na generalização, um elemento é uma especialização de outro componente geral. Pode ser substituído por ele. É usado principalmente para representar herança.
Realização
Em um relacionamento de realização da UML, uma entidade denota alguma responsabilidade que não é implementada por ela mesma e pela outra entidade que a implementa. Essa relação é encontrada principalmente no caso de interfaces.
Associação
É um relacionamento estrutural que representa objetos que podem ser conectados ou associados a outro objeto dentro do sistema. As seguintes restrições podem ser aplicadas ao relacionamento de associação.
- {implícito} – As restrições implícitas especificam que a relação não é manifesta; é baseado em um conceito.
- {pedido} – As restrições ordenadas especificam que o conjunto de objetos em uma extremidade de uma associação está de uma maneira específica.
- {mutável} – A restrição mutável especifica que a conexão entre vários objetos no sistema pode ser adicionada, removida e modificada conforme o requisito.
- {addOnly} – Especifica que as novas conexões podem ser adicionadas a partir de um objeto que está situado no outro extremo de uma associação.
- {congeladas} – Especifica que quando um link é adicionado entre dois objetos, ele não pode ser modificado enquanto a restrição congelada estiver ativa no link ou conexão especificado.
Também podemos criar uma classe que possua propriedades de associação; é chamada de classe de associação.
Associação reflexiva
A associação reflexiva é um subtipo de relacionamento de associação na UML. Numa associação reflexiva, as instâncias da mesma classe podem estar relacionadas entre si. Uma instância de uma classe também é chamada de objeto.
A associação reflexiva afirma que um link ou conexão pode estar presente nos objetos da mesma classe.
Consideremos um exemplo de fruta de classe. A classe fruta possui duas instâncias, como manga e maçã. A associação reflexiva afirma que uma ligação entre manga e maçã pode estar presente por serem instâncias da mesma classe, como a fruta.
Associação dirigida
Como o nome sugere, a associação dirigida está relacionada à direção do fluxo dentro das classes de associação.
Numa associação dirigida, o fluxo é direcionado. A associação de uma classe para outra classe flui apenas em uma única direção.
É indicado por uma linha sólida com uma ponta de seta.
Exemplo:
Você pode dizer que existe um relacionamento de associação direcionada entre um servidor e um cliente. Um servidor pode processar as solicitações de um cliente. Este fluxo é unidirecional, fluindo apenas do servidor para o cliente. Conseqüentemente, um relacionamento de associação direcionada pode estar presente nos servidores e clientes de um sistema.
Dependência
Usando um relacionamento de dependência em UML, pode-se relacionar como várias coisas dentro de um sistema específico dependem umas das outras. A dependência é usada para descrever o relacionamento entre vários elementos da UML que dependem uns dos outros.
Estereótipos
- "vincular" – Bind é uma restrição que especifica que a origem pode inicializar o modelo em um local de destino, usando parâmetros ou valores fornecidos.
- «derivar» – Representa que a localização de um objeto de origem pode ser calculada a partir do objeto de destino.
- «amigo» – Especifica que a origem tem visibilidade exclusiva no objeto de destino.
- "instancia de" – Especifica que a instância de um classificador de destino é o objeto de origem.
- «instanciar» – Especifica que o objeto de origem é capaz de criar instâncias de um objeto de destino.
- "refinar" – Especifica que o objeto de origem possui valores absolutos excepcionais.tracção do que a do objeto alvo.
- "usar" – É usado quando pacotes são criados em UML. O estereótipo use descreve que os elementos de um pacote fonte também podem estar presentes dentro do pacote alvo. Descreve que o pacote fonte faz uso de alguns elementos de um pacote alvo.
- "substituto" – especifica que o cliente pode ser substituído pelo fornecedor em tempo de execução.
- "acesso" – Especifica que o pacote fonte acessa os elementos do pacote alvo que também é chamada de fusão privada.
- "Importar" – Especifica que o destino pode importar o elemento de um pacote fonte como eles são definidos dentro do alvo que também é chamado de fusão pública.
- "permitir" – especifica que o elemento fonte tem acesso ao elemento fornecedor, independentemente da visibilidade declarada do fornecedor.
- "ampliar" – Ajuda a especificar que o destino pode estender o comportamento do elemento de origem.
- "incluir" – Permite especificar o elemento de origem que pode ser incluído no comportamento de outro elemento em um local especificado. (o mesmo que uma chamada de função em c/c++)
- "tornar-se" – Especifica que o destino é semelhante à origem com valores e funções diferentes.
- "chamar" – Especifica que a origem pode invocar um método de objeto de destino.
- "Cópia de" – Especifica que o objeto alvo é independente, cópia de um objeto fonte.
- "parâmetro" – O fornecedor é um parâmetro das operações do cliente.
- "enviar" – O cliente é uma operação que envia ao fornecedor um alvo não especificado.
Estereótipos entre máquinas de estado
- "enviar" – Especifica que a operação de origem envia o evento de destino.
Generalização
É um relacionamento entre uma entidade geral e uma entidade única que está presente dentro do sistema.
Em um relacionamento de generalização, o conceito orientado a objetos denominado herança pode ser implementado. Existe um relacionamento de generalização entre dois objetos, também chamados de entidades ou coisas. Em um relacionamento de generalização, uma entidade é pai e outra é considerada filha. Essas entidades podem ser representadas por meio de herança.
Na herança, um filho de qualquer pai pode acessar, atualizar ou herdar a funcionalidade especificada no objeto pai. Um objeto filho pode adicionar sua funcionalidade a si mesmo, bem como herdar a estrutura e o comportamento de um objeto pai.
Esse tipo de relacionamento é conhecido coletivamente como relacionamento de generalização.
Estereótipos e suas restrições
- "implementação" – Este estereótipo é usado para representar que a entidade filha está sendo implementada pela entidade pai herdando a estrutura e o comportamento de um objeto pai sem violar as regras. Observação: Esse estereótipo é amplamente utilizado em um único herança.
O relacionamento de generalização contém restrições como completo, incompleto para verificar se todas as entidades filhas estão sendo incluídas no relacionamento ou não.
Realização
Em um relacionamento de realização da UML, uma entidade denota alguma responsabilidade que não é implementada por ela mesma e pela outra entidade que a implementa. Essa relação é encontrada principalmente no caso de interfaces.
A realização pode ser representada de duas maneiras:
- Usando um Forma canônica
- Usando ano forma elidida

No diagrama acima, as regras de negócios da conta realizam a interface IRuleAgent.
Tipos de realização
- Forma canônica: Em um diagrama UML, a forma canônica é usada para representar interfaces em todo o sistema. Ela utiliza um estereótipo de interface para criar uma interface e uma relação de realização é usada para representar essa interface específica. Na forma canônica, a relação de realização é representada por uma linha tracejada com uma seta aberta de tamanho considerável. No diagrama acima, a interface Iruleagent é representada por um objeto chamado Account Business Rules.
- Forma elidida: Realização no Diagrama de classe UML Também pode ser representada usando uma forma elidida. Nessa forma, a interface é denotada por um círculo, também conhecido como notação de pirulito. Essa interface, quando implementada usando qualquer elemento presente no sistema, cria uma estrutura elidida. No diagrama acima, a interface Iruleagent é representada usando uma forma elidida, implementada por acctrule.dll.
Composição
Não é um relacionamento UML padrão, mas ainda é usado em vários aplicativos.
A agregação composta é um subtipo de relação de agregação com características como:
- é uma associação bidirecional entre os objetos.
- É uma relação todo/parte.
- Se um composto for excluído, todas as outras peças associadas a ele serão excluídas.
A agregação composta é descrita como uma associação binária decorada com um losango preto preenchido na extremidade do agregado (inteiro).
Uma pasta é uma estrutura que contém um número n de arquivos. Uma pasta é usada para armazenar os arquivos dentro dela. Cada pasta pode ser associada a qualquer número de arquivos. Em um sistema de computador, cada arquivo faz parte de pelo menos uma pasta dentro do sistema de organização de arquivos. O mesmo arquivo também pode fazer parte de outra pasta, mas não é obrigatório. Sempre que um arquivo é removido da pasta, a pasta não é afetada, enquanto os dados relacionados a esse arquivo específico são destruídos. Se uma operação de exclusão for executada na pasta, ela também afetará todos os arquivos que estão presentes dentro da pasta. Todos os arquivos associados à pasta são destruídos automaticamente assim que a pasta é removida do sistema.
Este tipo de relacionamento em UML é conhecido como relacionamento de agregação composto.
Agregação
An agregação É um subtipo de relação de associação em UML. Agregação e composição são ambos tipos de relação de associação em UML. Uma relação de agregação pode ser descrita em termos simples como "um objeto de uma classe pode possuir ou acessar objetos de outra classe".
Num relacionamento de agregação, o objeto dependente permanece no escopo de um relacionamento mesmo quando o objeto de origem é destruído.
Consideremos um exemplo de um carro e uma roda. Um carro precisa de uma roda para funcionar corretamente, mas nem sempre uma roda precisa de um carro. Também pode ser usado com bicicletas, bicicletas ou quaisquer outros veículos, mas não com um carro específico. Aqui, o objeto roda é significativo mesmo sem o objeto carro. Esse tipo de relacionamento é chamado de relação de agregação.

