Разлика между агрегиране и композиция в UML
Ключова разлика между агрегиране и композиция
- Агрегирането е един тип асоцииране между два обекта, описващо връзката „имам“, докато композицията е специфичен тип агрегиране, което предполага собственост.
- Агрегацията се обозначава с помощта на права линия с празна стрелка в единия край. От друга страна, композицията е обозначена с помощта на права линия със запълнен връх на стрелка в който и да е от краищата.
- В връзка на агрегиране обектите, които са свързани един с друг, могат да останат в обхвата на системата един без друг. Но в композиционна връзка обектите, които са свързани един с друг, не могат да останат в обхвата един без друг.
- При агрегацията свързаните обекти не зависят от другия обект, докато при композицията обектите са силно зависими един от друг.
- В Aggregation изтриването на един елемент не засяга друг свързан елемент. Напротив, в композицията изтриването на един елемент засяга друг свързан елемент.
- Агрегацията се обозначава със запълнен диамант, докато празният диамант означава състав.
Какво е агрегиране?
Агрегирането е специален случай на асоцииране, когато един обект „има“ друг обект, който можете да имате агрегиране между тях. Посоката между тях ви помага да определите кой обект съдържа другия обект. Агрегирането е известно също като връзка „Има-а“. Това е подтип на асоциативна връзка в UML.
Какво е композиция?
Композицията е специален случай на агрегиране, който ви помага да укажете връзка цяла част между композиционния клас и подчинен (част) клас.
Разлика между агрегиране и композиция в UML
Ето основната разлика между агрегиране и композиция:
Агрегация | композиция |
---|---|
Агрегирането е един вид асоциация между два обекта, който също описва връзката „имам“. | Композицията е специфичен тип агрегиране, което предполага собственост. |
Агрегацията се обозначава с помощта на права линия с празна стрелка в единия край. | Композицията е обозначена с помощта на права линия със запълнен връх на стрелка в който и да е от краищата. |
Агрегирането е част от асоциативна връзка. | Композицията е част от асоциативна връзка. |
Агрегацията се счита за слаб тип асоциация. | Композицията се счита за силен тип асоциация. |
В връзка на агрегиране обектите, които са свързани един с друг, могат да останат в обхвата на системата един без друг. | В композиционна връзка обектите, които са свързани един с друг, не могат да останат в обхвата един без друг. |
При агрегирането свързаните обекти не зависят от другия обект. | По отношение на състава обектите са силно зависими един от друг. |
В Aggregation изтриването на един елемент не засяга друг свързан елемент. | В композицията изтриването на един елемент засяга друг свързан елемент. |
Пример: Колата се нуждае от колело, но не винаги изисква едно и също колело. Една кола може да работи адекватно и с друго колело. | Пример: В папката е поставен файл. Ако някой изтрие папката, тогава файлът, свързан с тази папка, също се изтрива. |
В Агрегиране, родител връзка с дъщерния обект. |
По отношение на състава родителският обект притежава дъщерния обект. |
Обозначава се със запълнен диамант | Обозначава се с празен диамант |
Детето няма цял живот. | Детето може да има цял живот. |
Той е представен от кух диамант до класа на сглобяване. | Той е представен от плътен диамант до класа на сглобяване. |
Изтриването на сборка никога не засяга нейните части. | В случай на притежаване на клас, обектът се изтрива. Това също засяга съдържащия се клас обект. |
Агрегиране срещу състав: Ключови статистики
Агрегация | композиция | |
---|---|---|
собственик | Без собственик | Самостоятелен собственик |
Човешки живот | Имат техния живот. | Животът на собственика. |
Дъщерен обект | Всички дъщерни обекти са независими. | Дъщерните обекти принадлежат на един родител. |
Пример за композиция
Папката може да съдържа много файлове, докато всеки файл има точно една родителска папка. Ако дадена папка бъде изтрита, всички съдържащи се файлове също се премахват. В съставно агрегиране даден обект може да бъде част само от един композит в даден момент.
Пример за агрегиране
Например колата ви се състои от колела, двигател, скоростна кутия, кормилно управление и основно тяло и т.н. Това е възел, а останалите части са неговите съставни части.
Тук колата към волана е един агрегат, автомобилът към двигателя е друг агрегат, автомобилът към скоростната кутия друг и т.н.
Този тип сдвояване ви помага да определите множествеността на съставната част в рамките на сглобяването като негов резултат. Броят на обектите също може да бъде изобразен.
Колата се нуждае от колело, за да функционира правилно. Не можем обаче да кажем същото за автомобила. Същата логика може да се приложи към велосипед, велосипед или всяко друго превозно средство, но не и конкретна кола.
Тук обектът колело има значение дори без обекта кола. Известно е като връзка на агрегиране.