Explicação das setas UML


244

Eu estudei recentemente a UML e desenhei diagramas simples com setas comuns entre classes, mas sei que não é suficiente. Existem muitas outras setas: generalização, realização e etc. que têm significado para o leitor de diagrama.

Existe um recurso interessante que possa explicar cada flecha (ordinária, lisa, pontilhada, cheia de diamantes, diamante)?

Seria o melhor se houvesse alguns exemplos de código para eles.


4
Eu recomendaria fortemente considerar este: dzone.com/refcardz/getting-started-uml
trindade

Respostas:


475

Aqui estão algumas explicações dos documentos do Visual Studio 2015:

Diagramas de classes UML: Referência : https://msdn.microsoft.com/library/dd409437%28VS.140%29.aspx

Diagrama de classes UML

5 : Associação : um relacionamento entre os membros de dois classificadores.

5a : Agregação : uma associação que representa um relacionamento de propriedade compartilhada. A propriedade Agregação da função de proprietário está definida como Compartilhada .

5b : Composição : uma associação que representa um relacionamento de parte inteira. A propriedade Agregação da função de proprietário está definida como Composto .

9 : Generalização : o classificador específico herda parte de sua definição do classificador geral. O classificador geral está na extremidade da seta do conector. Atributos, associações e operações são herdadas pelo classificador específico. Use a ferramenta Herança para criar uma generalização entre dois classificadores.

Diagrama do pacote

13 : Importar : um relacionamento entre pacotes, indicando que um pacote inclui todas as definições de outro.

14 : Dependência : a definição ou implementação do classificador dependente pode mudar se o classificador no final da ponta da seta for alterado.

Realização de relacionamento

15 : Realização : a classe implementa as operações e os atributos definidos pela interface. Use a ferramenta Herança para criar uma realização entre uma classe e uma interface.

16 : Realização : uma apresentação alternativa do mesmo relacionamento. A etiqueta no símbolo do pirulito identifica a interface.

Diagramas de classes UML: Diretrizes : http://msdn.microsoft.com/library/dd409416%28VS.140%29.aspx

Propriedades de uma associação

Agregação : aparece como uma forma de diamante em uma extremidade do conector. Você pode usá-lo para indicar que as instâncias na função agregadora possuem ou contêm instâncias da outra.

É navegável : se verdadeiro para apenas uma função, uma seta aparece na direção navegável. Você pode usar isso para indicar a navegabilidade dos links e das relações com o banco de dados no software.


Generalização : Generalização significa que o tipo especializado ou derivado herda atributos, operações e associações do tipo geral ou base. O tipo geral aparece na extremidade da seta do relacionamento.

Realização : Realização significa que uma classe implementa os atributos e operações especificados pela interface. A interface está na extremidade da seta do conector.

Deixe-me saber se você tem mais perguntas.


1
Boa referência, mas para mim um Menu -> MenuItem tem a mesma relação que um Order -> OrderItem, então ambos são Composições.
Ignacio Soler Garcia

4
Isso significa apenas que o item do pedido pertence a um pedido e não pode ser movido, enquanto o Item do Menu pode ser ajustável - o usuário pode alterar a posição do Item do Menu. É a solução escolhida. Por que não?
Gangnus

@ Gangnus, obrigado. Essa explicação esclareceu a diferença que me ilude há muito tempo.
JMD

1
@JMD, os itens do pedido também podem ser movidos. A agregação composta é definida na especificação UML da seguinte maneira: A agregação composta é uma forma forte de agregação que exige que um objeto de peça seja incluído em no máximo um objeto composto por vez. Se um objeto composto for excluído, todas as suas instâncias de peça que são objetos serão excluídas. Um objeto de peça pode (onde permitido de outra forma) ser removido de um objeto composto antes que o objeto composto seja excluído e, portanto, não pode ser excluído como parte do objeto composto.
Www.admiraalit.nl

2
@ AGer Obrigado, atualizei o tópico e os links de imagem.
Esther Fan - MSFT

153

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Eu acho que essas imagens são compreensíveis.


Alguns desses conceitos não se sobrepõem? A depende B. A tem acesso a B. Uma associação nem sempre é uma dependência e uma dependência sempre é uma associação?
EresDev 31/10/19

No diagrama, a realização é repetida duas vezes, mas com uma imagem diferente. Por favor, você pode elaborar a diferença?
variável


13

Minha "folha de dicas" UML favorita é a UML Distilled , de Martin Fowler. É o único livro que li que recomendo.


1
Interessante, gostei bastante de refatoração. É sobre isso que você tem opiniões.
djna

Sim, achei tudo um pouco óbvio e não gostei da concentração em Java. Além disso, por favor, não aceite minha resposta dizendo que os outros livros dele são lixo.

O livro de Fowler também tem uma folha de dicas no interior das capas dos livros. Muito bom para começar, especialmente porque sua próxima pergunta será em que direção as setas vão?
Ted Johnson

12
185 páginas parecem um pouco excessivas para uma "folha de dicas"!
cdyson37


9

Para referência rápida e exemplos claros e concisos, a Referência Rápida UML de Allen Holub é excelente:

http://www.holub.com/goodies/uml/

(Existem alguns exemplos específicos de setas e ponteiros na primeira coluna de uma tabela, com descrições na segunda coluna.)


Eu gostava de seu primeiro exemplo e estava esperando hew iria incrementalmente na mesma linha com o básico, mas é uma boa leitura
killjoy

6

Uma descrição muito fácil de entender é a documentação do yuml , com exemplos para diagramas de classes, casos de uso e atividades.


Provavelmente, os melhores UML para idiotas ao descer esta lista; nota: este site também permite que você desenhe suas próprias UMLs de graça (5).
killjoy

5

A resposta aceita foi dita: Faltam algumas explicações. Por exemplo, qual é a diferença entre uma associação unidirecional e bidirecional? No exemplo fornecido, tanto faz existir. (Ambos os '5 estão nas setas)

Se você procura uma resposta mais completa e tem mais tempo, aqui está uma explicação completa.



0

Agregações e composições são um pouco confusas. No entanto, pense como composições são uma versão mais forte da agregação. O que isso significa? Vamos dar um exemplo: (Agregação) 1. Pegue uma sala de aula e os alunos: neste caso, tentamos analisar o relacionamento entre eles. Uma sala de aula tem um relacionamento com os alunos. Isso significa que a sala de aula é composta por um ou vários alunos. Mesmo se removermos a classe Sala de aula, a classe Alunos não precisará ser destruída, o que significa que podemos usar a classe Aluno independentemente.

(Composição) 2. Dê uma olhada nas páginas e na classe Book. Nesse caso, páginas é um livro, o que significa que coleções de páginas compõem o livro. Se removermos a classe book, toda a classe Page será destruída. Isso significa que não podemos usar a classe da página independentemente.

Se você ainda não está claro sobre este tópico, assista a este vídeo maravilhoso, que explicou a agregação mais claramente.

https://www.youtube.com/watch?v=d5ecYmyFZW0

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.