Ссылаясь на изображение, которое я нашел в Интернете. Он помечает композицию как подмножество агрегации. Насколько я понимаю, композиция - это форма тесной связи, например, когда мы создаем экземпляр объекта внутри другого объекта. В то время как агрегация — это форма слабой связи, похожая на инъекцию зависимостей. Они оба кажутся разными, так почему композиция может быть подмножеством агрегации?
Изображение: https://algodaily.com/lessons/association-aggregation-composition-casting
Композиция – это особая форма агрегации. В композиции, если родительский объект уничтожается, то дочерние объекты также перестают существовать. Композиция на самом деле является сильным типом агрегации и иногда упоминается как отношение «смерти».
Слово «специализированный» буквально является антонимом слова «обобщение». Таким образом, утверждение «Композиция — это специализированная форма агрегации» — это то же самое, что «Агрегация — это обобщенная форма композиции».
Я использовал термин обобщение, не так ли?
Потому что это историческое состояние искусства не соответствует UML 2.5. Агрегация как атрибут свойства объясняется на стр. 110 UML 2.5:
- нет | Указывает, что свойство не имеет семантики агрегирования.
- общий | Указывает, что свойство имеет общую семантику агрегирования. Точная семантика разделяемой агрегации зависит от области приложения и разработчика моделей.
- композитный | Указывает, что Свойство объединено составно, т. е. составной объект несет ответственность за существование и хранение составных объектов (см. определение частей в 11.2.3).
Так что на самом деле оба стоят бок о бок с общим, не имея никакой семантики. В прежних спецификациях UML было некоторое определение, которое делало общий доступ неким подмножеством. Но это всего лишь история. Впрочем, из голов людей это не выкинешь.
Нет, это не правда. Здесь нет ничего общего.