Агрегация срещу композиция в UML: ключови разлики

Съдържание:

Anonim

Какво е композиция?

Композицията е специален случай на агрегиране, който ви помага да посочите цялостна връзка между класа на композицията и подчинен (част) клас.

Какво е агрегиране?

Агрегирането е специален случай на асоцииране, когато обектът има друг обект, който можете да обобщите между тях. Посоката между тях ви помага да посочите кой обект съдържа другия обект. Агрегацията е известна още като връзка "Има-а". Това е подтип на връзка за асоцииране в UML.

КЛЮЧОВИ РАЗЛИКИ

  • Агрегацията е един вид асоциация между два обекта, описващи връзката „има“, докато Композицията е специфичен тип Агрегация, която предполага собственост.
  • Агрегирането се показва с помощта на права линия с празна стрелка в единия край. От друга страна, съставът е обозначен с помощта на права линия със запълнена стрелка в който и да е от краищата.
  • В агрегационната връзка обектите, които са свързани помежду си, могат да останат в обхвата на системата един без друг. Но в композиционната връзка обектите, които са свързани помежду си, не могат да останат в обхвата един без друг.
  • В агрегирането свързаните обекти не зависят от другия обект, докато по състав обектите са силно зависими един от друг.
  • В агрегирането изтриването на един елемент не засяга друг свързан елемент. Напротив, в композицията изтриването на един елемент засяга друг асоцииран елемент.
  • Агрегирането се обозначава с напълнен диамант, докато съставът се обозначава с празен диамант.

Основни статистически данни

Агрегиране Състав
Собственик Няма собственик Единичен собственик
Живот Да имат техния живот. Живот на собственика.
Детски обект Всички детски обекти са независими. Дочерните обекти принадлежат на самотен родител.

Пример за състав

Папката може да съдържа много файлове, докато всеки файл има точно един родител на папка. Ако дадена папка бъде изтрита, всички съдържащи се файлове също се премахват. В съставна агрегация обектът може да бъде част само от един композитен в даден момент.

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

Например колата ви се състои от колела, двигател, скоростна кутия, кормилно управление и основната част на корпуса и т.н.

Тук автомобилът към колелото е един агрегат, автомобилът към двигателя е друг агрегат, автомобилът към скоростната кутия е друг и така нататък.

Този тип сдвояване ви помага да определите множествеността на съставната част в сборката като резултат от нея. Броят на обектите също може да бъде изобразен.

Колата се нуждае от колело, за да функционира правилно. Не можем обаче да кажем същото с кола. Същата логика може да се приложи към велосипед, велосипед или друго превозно средство, но не и към конкретна кола.

Тук обектът на колелото има смисъл дори без обекта на автомобила. Известно е като агрегационна връзка.

Разлика между агрегиране и състав

Ето основната разлика между агрегирането и състава:

Агрегиране Състав
Агрегацията е един вид асоциация между два обекта, която също описва връзката "има". Съставът е специфичен вид агрегиране, което предполага собственост.
Агрегирането се показва с помощта на права линия с празна стрелка в единия край. Съставът се обозначава с помощта на права линия със запълнена стрелка в който и да е от краищата.
Агрегирането е част от отношенията на асоцииране. Композицията е част от отношенията на асоцииране.
Агрегацията се счита за слаб тип асоциация. Съставът се счита за силен тип асоциация.
В агрегационната връзка обектите, които са свързани помежду си, могат да останат в обхвата на системата един без друг. В композиционната връзка обектите, които са свързани помежду си, не могат да останат в обхвата един без друг.
В агрегирането свързаните обекти не зависят от другия обект. По състав обектите са силно зависими един от друг.
В агрегирането изтриването на един елемент не засяга друг свързан елемент. В състава изтриването на един елемент засяга друг асоцииран елемент.
Пример: Колата се нуждае от колело, но не винаги изисква едно и също колело. Колата може да функционира адекватно и с друго колело. Пример: В папката се поставя файл. Ако някой изтрие папката, тогава файлът, свързан с тази папка, също се изтрива.
В агрегиране, родителска връзка с дъщерния обект. По състав родителският обект притежава дъщерния обект.
Обозначава се с напълнен диамант Обозначава се с празен диамант
Детето няма цял живот. Детето може да има цял живот.
Представен е с кух диамант до класа на сглобяване. Представен е от плътен диамант до класа на сглобяване.
Изтриването на сборката никога не засяга частите му. В случай на притежание на клас, обектът се изтрива. Той също така засяга съдържащия обект клас.