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