Tipos de relacionamentos UML: associação, dependência, generalização

O que é relacionamento UML?

Relacionamentos em UML são usados ​​​​para representar uma conexão entre coisas estruturais, comportamentais ou de agrupamento. Também é chamado de link que descreve como duas ou mais coisas podem se relacionar durante a execução de um sistema. Os tipos de relacionamento 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

Relacionamentos do 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 abstração excepcional que a do objeto de destino.
  • "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 algum 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 Este estereótipo se for 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
Realização em UML
Realização em UML

No diagrama acima, as regras de negócios da conta realizam a interface IRuleAgent.

Tipos de realização

  1. Forma canônica Em um relacionamento de realização da UML, a forma canônica é usada para realizar interfaces em todo o sistema. Ele usa um estereótipo de interface para criar uma interface e o relacionamento de realização é usado para realizar a interface específica. Em uma forma canônica, o relacionamento de realização é indicado usando a linha tracejada direcionada com uma ponta de seta aberta de tamanho considerável. No diagrama acima, a interface Iruleagent é realizada usando um objeto chamado Account Business Rules.
  2. Realização da forma eliminada no Diagrama de classe UML também pode ser mostrado usando um formulário elidido. Na forma elidida, a interface é denotada por um círculo, também chamado de notação de pirulito. Esta interface, quando realizada usando qualquer coisa presente dentro do sistema, cria uma estrutura elidida. No diagrama acima, a interface Iruleagent é denotada usando um formato elidido que está sendo realizado 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).

Composição em UML

Composição em UML

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 relacionamento de associação em UML. Agregação e composição são tipos de relacionamento de associação na UML. Um relacionamento de agregação pode ser descrito em palavras simples como “um objeto de uma classe pode possuir ou acessar os 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.

Resumo

  • O relacionamento na UML permite que uma coisa se relacione com outras coisas dentro do sistema.
  • Uma associação, dependência, generalização e relacionamentos de realização são definidos pela UML.
  • O relacionamento de composição também pode ser usado para representar que o objeto pode fazer parte de apenas um composto por vez.
  • Associação é usada para descrever que um objeto pode ser associado a outro objeto.
  • Dependência denota que os objetos podem ser dependentes uns dos outros.
  • Uma realização é um relacionamento significativo entre classificadores.
  • A generalização também é chamada de relacionamento pai-filho.

Resuma esta postagem com: