Объяснение стрелок UML


244

Недавно я изучал UML и рисовал простые диаграммы с обычными простыми стрелками между классами, но я знаю, что этого недостаточно. Есть много других стрелок: обобщения, реализации и т. Д., Которые имеют значение для читателя диаграмм.

Есть ли хороший ресурс, который мог бы объяснить каждую стрелу (обычную, простую, пунктирную, бриллиантовую, бриллиантовую)?

Было бы лучше, если бы у него было несколько примеров кода для них.


4
Я настоятельно рекомендую рассмотреть это: dzone.com/refcardz/getting-started-uml
Троица

Ответы:


475

Вот некоторые пояснения из документации по Visual Studio 2015:

Диаграммы классов UML: Ссылка : https://msdn.microsoft.com/library/dd409437%28VS.140%29.aspx

Диаграмма классов UML

5 : Ассоциация : отношения между членами двух классификаторов.

5a : Агрегация : ассоциация, представляющая отношения совместного владения. Для свойства Aggregation роли владельца установлено значение « Общий» .

5b : Композиция : ассоциация, представляющая отношения целой части. Для свойства Aggregation роли владельца установлено значение Composite .

9 : Обобщение : определенный классификатор наследует часть своего определения от общего классификатора. Общий классификатор находится на конце стрелки разъема. Атрибуты, ассоциации и операции наследуются конкретным классификатором. Используйте инструмент Inheritance , чтобы создать обобщение между двумя классификаторами.

Схема упаковки

13 : Импорт : отношение между пакетами, указывающее, что один пакет включает в себя все определения другого.

14 : Зависимость : определение или реализация зависимого классификатора может измениться, если изменить классификатор в конце стрелки.

Реализация отношений

15 : Реализация : класс реализует операции и атрибуты, определенные интерфейсом. Используйте инструмент Inheritance , чтобы создать реализацию между классом и интерфейсом.

16 : Реализация : альтернативное представление тех же самых отношений. Метка на символе леденца на палочке идентифицирует интерфейс.

Диаграммы классов UML: Рекомендации : http://msdn.microsoft.com/library/dd409416%28VS.140%29.aspx

Свойства Ассоциации

Агрегация : это выглядит как ромбовидная форма на одном конце разъема. Вы можете использовать его, чтобы указать, что экземпляры в агрегирующей роли владеют или содержат экземпляры другой роли.

Навигация : если true только для одной роли, в навигационном направлении появляется стрелка. Вы можете использовать это, чтобы указать навигацию ссылок и связей с базой данных в программном обеспечении.


Обобщение : Обобщение означает, что специализирующий или производный тип наследует атрибуты, операции и ассоциации общего или базового типа. Общий тип отображается в конце стрелки.

Реализация : Реализация означает, что класс реализует атрибуты и операции, определенные интерфейсом. Интерфейс находится на конце стрелки разъема.

Дайте мне знать, если у вас есть еще вопросы.


1
Хорошая ссылка, но для меня Menu -> MenuItem имеет такое же отношение, как Order -> OrderItem, так что оба они являются Compositions.
Игнасио Солер Гарсия

4
Это означает только то, что элемент заказа принадлежит заказу и не может быть перемещен, в то время как пункт меню может быть изменен - ​​пользователь может изменить положение пункта меню. Это решение выбрано. Почему нет?
Гангнус

@ Gangnus, спасибо. Это объяснение прояснило разницу, которая долго ускользала от меня.
JMD

1
@JMD, элементы заказа также можно перемещать. Составная агрегация определяется в спецификации UML следующим образом: Составная агрегация - это сильная форма агрегации, которая требует, чтобы объект детали включался не более чем в один составной объект одновременно. Если составной объект удаляется, все его составные части, которые являются объектами, удаляются вместе с ним. Частичный объект может (если разрешено иное) быть удаленным из составного объекта до того, как составной объект будет удален, и, таким образом, не может быть удален как часть составного объекта.
www.admiraalit.nl

2
@aGer Спасибо, я обновил тему и ссылки на изображения.
Эстер Фан - MSFT

154

введите описание изображения здесь

введите описание изображения здесь

Я думаю, что эти картины понятны.


Не совпадают ли некоторые из этих концепций? A зависит B. A имеет доступ к B. Разве ассоциация не всегда зависимость, а зависимость всегда ассоциация?
EresDev

1
На диаграмме Реализация повторяется дважды, но с разным изображением. Пожалуйста, вы можете уточнить разницу?
переменная

23

Хорошая шпаргалка (http://loufranco.com/wp-content/uploads/2012/11/cheatsheet.pdf) :

Это покрывает:

  • Диаграмма классов
  • Схема последовательности
  • Схема упаковки
  • Диаграмма объектов
  • Диаграмма вариантов использования

И предоставляет несколько образцов.

Элементы Диаграммы Класса, такие как отношения родитель-потомок, отношения подкласса, интерфейс и разработчик, плюс Элементы Диаграммы Последовательности


3
Я искал именно это последние 30 минут. Я знаю понятия, я просто забываю символы.
aclave1

13

Мой любимый "шпаргалка" UML - UML Distilled Мартина Фаулера. Это единственная из его книг, которую я прочитал, которую я рекомендую.


1
Интересно, мне очень понравился Refactoring. Это тот, у кого есть мнения.
DJNA

Да, я нашел все это немного очевидным, и мне не нравилась концентрация на Java. Также, пожалуйста, не воспринимайте мой ответ как о том, что другие его книги - мусор.

Книга Фаулера также имеет шпаргалку на обложках книг. Действительно хорошо для начала, тем более что ваш следующий вопрос будет в каком направлении идут стрелки?
Тед Джонсон

12
185 страниц кажутся немного чрезмерными для "шпаргалки"!
cdyson37


9

Краткий справочник Аллена Холуба по UML превосходен:

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

(Есть довольно много конкретных примеров стрелок и указателей в первом столбце таблицы, с описаниями во втором столбце.)


Мне понравился его самый первый пример, и я надеялся, что буквы будут постепенно увеличиваться в соответствии с основами, но это хорошее чтение
killjoy

6

Очень простое для понимания описание - это документация на yuml с примерами для диаграмм классов, вариантов использования и действий.


Вероятно, лучшие UML-для-идиоты, спускаясь по этому списку; примечание: этот сайт также позволяет вам создавать свои собственные UML бесплатно (5).
killjoy

6

Принятый ответ, как говорится, отсутствует некоторые объяснения. Например, в чем разница между однонаправленной и двунаправленной ассоциацией? В указанном примере, как сделать существуют. (Оба «5» в стрелках)

Если вы ищете более полный ответ и больше времени, вот подробное объяснение.



0

Агрегации и композиции немного сбивают с толку. Тем не менее, думаю, что композиции являются более сильной версией агрегации. Что это значит? Давайте рассмотрим пример: (Агрегация) 1. Возьмите классную комнату и учеников. В этом случае мы попытаемся проанализировать отношения между ними. Классная комната имеет в отношения со студентами. Это означает, что класс состоит из одного или нескольких учеников. Даже если мы удалим класс Classroom, класс учеников не нужно уничтожать, что означает, что мы можем использовать класс Student независимо.

(Композиция) 2. Взгляните на страницы и Книжный класс. В этом случае страницы - это книга, что означает, что наборы страниц составляют книгу. Если мы удалим класс книги, весь класс Page будет уничтожен. Это означает, что мы не можем использовать класс страницы независимо.

Если вам все еще неясно по этой теме, посмотрите это короткое замечательное видео, которое объясняет агрегацию более четко.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.