Типы отношений UML: ассоциация, зависимость, обобщение

⚡ Умное резюме

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

  • 🔗 Ассоциация: Структурная связь, посредством которой соединяются объекты, при этом ограничения и множественность определяют, сколько объектов участвует в этой связи.
  • ➡️ Зависимость: Односторонние отношения, при которых изменение элемента, связанного с поставщиком, может повлиять на зависимого клиента.
  • ???? Обобщение: Отношение «родитель-потомок», реализующее наследование между общим и специализированным объектами.
  • 🧩 Реализация: Интерфейсtracгде одна организация определяет ответственность, а другая её реализует, что показано в канонической или опущенной форме.
  • 💠 Состав и агрегация: Взаимоотношения целого и части; композиция разрушает части вместе с целым, тогда как агрегирование позволяет частям пережить его.

Типы связей UML

Что такое UML-отношения?

Отношения в UML используются для обозначения связи между структурными, поведенческими или групповыми факторами.ping Это также называется связью, описывающей, как два или более объекта могут быть связаны друг с другом во время выполнения системы. Типы отношений в UML: ассоциация, зависимость, обобщение и реализация.

Изучим их подробно

Типы отношений диаграммы классов UML

Отношения диаграммы классов UML

Фонды и ассоциации

Это набор ссылок, соединяющих элементы модели UML. Он также определяет, сколько объектов участвует в этом отношении.

Зависимость

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

Обобщение

Это еще называют отношениями родитель-ребенок. В обобщении один элемент является специализацией другого общего компонента. Его можно заменить. Чаще всего он используется для обозначения наследования.

Реализация

В отношениях реализации UML один объект обозначает некоторую ответственность, которая не реализуется сама по себе, а другой объект ее реализует. Эта связь чаще всего встречается в случае интерфейсы.

Фонды и ассоциации

Это структурная связь, которая представляет, что объекты могут быть связаны или ассоциированы с другим объектом внутри системы. К отношениям ассоциации можно применить следующие ограничения.

  • {скрытый} – Неявные ограничения указывают, что взаимосвязь не очевидна; оно основано на концепции.
  • {заказал} – Упорядоченные ограничения указывают, что набор объектов на одном конце ассоциации расположен определенным образом.
  • {Сменный} – Изменяемое ограничение указывает, что связь между различными объектами в системе можно добавлять, удалять и изменять в соответствии с требованиями.
  • {addOnly} – Он указывает, что новые соединения могут быть добавлены из объекта, который находится на другом конце ассоциации.
  • {заморожено} – Он указывает, что когда ссылка добавляется между двумя объектами, ее нельзя изменить, пока замороженное ограничение активно для данной ссылки или соединения.

Мы также можем создать класс со свойствами ассоциации; он называется классом ассоциации.

Рефлексивная ассоциация

Рефлексивная ассоциация — это подтип ассоциативных отношений в UML. В рефлексивной ассоциации экземпляры одного и того же класса могут быть связаны друг с другом. Экземпляр класса также называется объектом.

Рефлексивная ассоциация утверждает, что ссылка или соединение могут присутствовать внутри объектов одного и того же класса.

Рассмотрим пример класса фруктов. Класс фруктов имеет два экземпляра, например манго и яблоко. Рефлексивная ассоциация утверждает, что связь между манго и яблоком может присутствовать, поскольку они являются экземплярами одного и того же класса, например фруктов.

Направленная ассоциация

Как следует из названия, направленная ассоциация связана с направлением потока внутри классов ассоциации.

В направленной ассоциации поток направлен. Ассоциация одного класса с другим протекает только в одном направлении.

Обозначается сплошной линией со стрелкой.

Пример:

Можно сказать, что между сервером и клиентом существует направленная ассоциация. Сервер может обрабатывать запросы клиента. Этот поток является однонаправленным и передается только от сервера к клиенту. Следовательно, отношения направленной ассоциации могут присутствовать на серверах и клиентах системы.

Зависимость

Используя отношения зависимости в UML, можно определить, как различные вещи внутри конкретной системы зависят друг от друга. Зависимость используется для описания отношений между различными элементами UML, которые зависят друг от друга.

Стереотипы

  • "связывать" – Bind — это ограничение, которое указывает, что источник может инициализировать шаблон в целевом местоположении, используя предоставленные параметры или значения.
  • «выводить» – Это означает, что местоположение исходного объекта можно вычислить по целевому объекту.
  • «друг» – Он указывает, что источник имеет уникальную видимость в целевом объекте.
  • "случай" – Он указывает, что экземпляр целевого классификатора является исходным объектом.
  • «создать экземпляр» – Он указывает, что исходный объект способен создавать экземпляры целевого объекта.
  • «уточнить» – Это указывает на то, что исходный объект обладает исключительными абсолютными свойствами.tracчем у целевого объекта.
  • "использовать" – Используется при создании пакетов в UML. Стереотип использования описывает, что элементы исходного пакета также могут присутствовать внутри целевого пакета. Он описывает, что исходный пакет использует некоторые элементы целевого пакета.
  • "заменять" – указывает, что клиент может быть заменен поставщиком во время выполнения.
  • "доступ" – Он указывает, что исходный пакет имеет доступ к элементам целевого пакета. которое также называется частным слиянием.
  • "Импортировать" – Он указывает, что цель может импортировать элемент исходного пакета, как он определен внутри цель, которую также называют публичным слиянием.
  • "разрешать" – указывает, что исходный элемент имеет доступ к элементу поставщика независимо от заявленной видимости поставщика.
  • "продлевать" – Помогает указать, что цель может расширить поведение исходного элемента.
  • "включать" – Позволяет указать исходный элемент, в который можно включить поведение другого элемента в указанном месте. (то же самое, что вызов функции в c/С++)
  • "становиться" – Он указывает, что цель аналогична источнику с другими значениями и ролями.
  • "вызов" – Он указывает, что источник может вызывать метод целевого объекта.
  • "Копировать" – Он указывает, что целевой объект является независимой копией исходного объекта.
  • «параметр» – Поставщик является параметром в работе клиента.
  • "отправлять" – клиент представляет собой операцию, которая отправляет поставщику некий неуказанный адрес.

Стереотипы среди государственной машины

  • "отправлять" – Указывает, что исходная операция отправляет целевое событие.

Обобщение

Это связь между общей сущностью и уникальной сущностью, присутствующей внутри системы.

В отношениях обобщения используется объектно-ориентированная концепция, называемая наследование может быть реализовано. Отношения обобщения существуют между двумя объектами, также называемыми сущностями или вещами. В отношениях обобщения одна сущность является родительской, а другая считается дочерней. Эти сущности могут быть представлены с помощью наследования.

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

Этот тип отношений в совокупности известен как отношения обобщения.

Стереотипы и их ограничения

  • "выполнение" – Этот стереотип используется для представления того, что дочерняя сущность реализуется родительской сущностью путем наследования структуры и поведения родительского объекта без нарушения правил. Примечание: Этот стереотип широко используется в одном контексте. наследование.

Отношения обобщения содержат такие ограничения, как «полный», «неполный», чтобы проверить, включены ли все дочерние объекты в отношения или нет.

Реализация

В отношениях реализации UML один объект обозначает некоторую ответственность, которая не реализуется сама по себе, а другой объект ее реализует. Эта связь чаще всего встречается в случае интерфейсы.

Реализация может быть представлена ​​двумя способами:

  • Использование каноническая форма
  • Использование год пропущенная форма
Реализация в UML
Реализация в UML

На приведенной выше диаграмме бизнес-правила учетной записи реализуют интерфейс IRuleAgent.

Виды реализации

  1. Каноническая форма: В отношении реализации UML каноническая форма используется для реализации интерфейсов в системе. Она использует стереотип интерфейса для создания интерфейса, а отношение реализации используется для реализации конкретного интерфейса. В канонической форме отношение реализации обозначается пунктирной направленной линией с большой открытой стрелкой. На приведенной выше диаграмме интерфейс Iruleagent реализован с помощью объекта, называемого Account Business Rules.
  2. Сокращенная форма: Реализация в Диаграмма классов UML Также может быть представлен в сокращенной форме. В сокращенной форме интерфейс обозначается кругом, который также называется «леденцовой» нотацией. Этот интерфейс, реализованный с использованием любого элемента, присутствующего в системе, создает сокращенную структуру. На приведенной выше диаграмме интерфейс Iruleagent обозначен в сокращенной форме и реализуется с помощью acctrule.dll.

Состав

Это не стандартное отношение UML, но оно все еще используется в различных приложениях.

Составная агрегация — это подтип отношения агрегации со следующими характеристиками:

  • это двусторонняя связь между объектами.
  • Это отношения целое/часть.
  • При удалении композиции все остальные части, связанные с ней, удаляются.

Сложная агрегация описывается как бинарная ассоциация, украшенная черным ромбом на агрегатном (целом) конце.

Композиция в UML

Композиция в UML

Папка — это структура, в которой хранится n файлов. Папка используется для хранения файлов внутри нее. Каждая папка может быть связана с любым количеством файлов. В компьютерной системе каждый файл является частью хотя бы одной папки внутри системы организации файлов. Тот же файл также может быть частью другой папки, но это не обязательно. Всякий раз, когда файл удаляется из папки, папка остается неизменной, тогда как данные, относящиеся к этому конкретному файлу, уничтожаются. Если в папке выполняется операция удаления, она также влияет на все файлы, находящиеся внутри папки. Все файлы, связанные с папкой, автоматически уничтожаются после удаления папки из системы.

Этот тип отношений в UML известен как составное отношение агрегации.

агрегирование

An агрегирование Агрегация — это подтип отношения ассоциации в UML. Агрегация и композиция — это два типа отношений ассоциации в UML. Отношение агрегации можно описать простыми словами как «объект одного класса может владеть объектами другого класса или получать к ним доступ».

В отношении агрегации зависимый объект остается в области отношения даже при уничтожении исходного объекта.

Рассмотрим пример автомобиля и колеса. Для правильной работы автомобилю необходимо колесо, но колесу не всегда нужна машина. Его также можно использовать с велосипедом, велосипедом или любым другим транспортным средством, но не с конкретным автомобилем. Здесь объект колеса имеет смысл даже без объекта автомобиля. Такой тип отношений называется отношением агрегации.

Часто задаваемые вопросы (FAQ)

Множественность указывает, сколько экземпляров одного класса могут быть связаны с экземплярами другого в рамках отношения, и записывается в виде значений, таких как 1, 0..1 или 1..*. Например, одна папка может содержать ноль или много файлов.

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

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

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

Да. Некоторые инструменты для создания диаграмм на основе ИИ считывают описание ваших классов на простом языке и создают черновую диаграмму классов со связями, ассоциативными, обобщающими и композиционными связями. Полученный результат является отправной точкой, которая все еще требует ручной проверки.

Подведем итог этой публикации следующим образом: