Разница между агрегацией и композицией в UML

Ключевая разница между агрегацией и композицией

  • Агрегация — это один тип ассоциации между двумя объектами, описывающий отношения «иметь», тогда как композиция — это особый тип агрегации, который подразумевает владение.
  • Агрегация обозначается прямой линией с пустой стрелкой на одном конце. С другой стороны, состав обозначается прямой линией с закрашенной стрелкой на любом из концов.
  • В отношениях агрегации объекты, связанные друг с другом, могут оставаться в пределах системы друг без друга. Но в отношениях композиции объекты, связанные друг с другом, не могут оставаться в области видимости друг без друга.
  • При агрегировании связанные объекты не зависят от другого объекта, тогда как при композиции объекты сильно зависят друг от друга.
  • В агрегировании удаление одного элемента не влияет на другой связанный элемент. Напротив, в композиции удаление одного элемента влияет на другой связанный элемент.
  • Агрегация обозначается закрашенным ромбом, а пустой ромб обозначает состав.
Разница между агрегацией и композицией
Разница между агрегацией и композицией

Что такое агрегация?

Агрегация — это особый случай ассоциации, когда объект «имеет» другой объект, между которыми можно провести агрегацию. Направление между ними помогает вам указать, какой объект содержит другой объект. Агрегация также известна как отношение «Есть». Это подтип ассоциативных отношений в UML-.

Что такое композиция?

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

Разница между агрегацией и композицией в UML

Вот основное различие между агрегацией и композицией:

агрегирование Состав
Агрегация — это один из типов связи между двумя объектами, который также описывает отношение «иметь». Композиция — это особый тип агрегации, который подразумевает владение.
Агрегация обозначается прямой линией с пустой стрелкой на одном конце. Состав обозначается прямой линией с закрашенной стрелкой на любом из концов.
Агрегация является частью отношения ассоциации. Композиция является частью ассоциативного отношения.
Агрегация рассматривается как слабый тип ассоциации. Композиция рассматривается как сильный тип ассоциации.
В отношениях агрегации объекты, связанные друг с другом, могут оставаться в пределах системы друг без друга. В отношениях композиции объекты, связанные друг с другом, не могут оставаться в области действия друг без друга.
При агрегировании связанные объекты не зависят от другого объекта. По составу объекты сильно зависят друг от друга.
В агрегировании удаление одного элемента не влияет на другой связанный элемент. В композиции удаление одного элемента влияет на другой связанный элемент.
Пример: машине нужно колесо, но не всегда одно и то же колесо. Автомобиль может адекватно функционировать и с другим колесом. Пример: файл помещен в папку. Если удалить папку, то файл, связанный с этой папкой, также будет удален.
В агрегировании родительский
отношения с дочерней сущностью.
По составу родительская сущность владеет дочерней сущностью.
Обозначается заполненным ромбом. Обозначается пустым ромбом
У ребенка нет жизни. Ребенок может жить всю жизнь.
Он представлен полым ромбом рядом с классом сборки. Он обозначен сплошным ромбом рядом с классом сборки.
Удаление сборки никогда не влияет на ее части. В случае владения классом объект удаляется. Это также влияет на содержащий объект класса.

Агрегация против композиции: основная статистика

агрегирование Состав
Владелец Нет владельца Одинокий собственник
Вечного пользования Имейте свою жизнь. Срок жизни владельца.
Дочерний объект Все дочерние объекты независимы. Дочерние объекты принадлежат одному родителю.

Пример композиции

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

Пример композиции

Пример агрегирования

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

Здесь автомобиль с колесом — это один агрегат, автомобиль с двигателем — другой агрегат, автомобиль с коробкой передач — другой и так далее.

Этот тип сопряжения помогает определить множественность составной части в сборке как ее результат. Также можно изобразить количество предметов.

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

Здесь объект колеса имеет смысл даже без объекта автомобиля. Это известно как отношение агрегации.

Пример агрегирования