UML асоциация срещу агрегиране срещу композиция
В UML диаграмите релациите се използват за свързване на няколко неща. Това е връзка между структурни, поведенчески или групиращи неща. Следват стандартните UML връзки, изброени по-долу:
- Асоциация
- Зависимост
- Обобщение
- Реализация
Асоциация
Връзката на асоцииране е структурна връзка, в която различни обекти са свързани в рамките на системата. Той показва двоична връзка между обектите, представляващи дейност. Той изобразява връзката между обекти, като учител, може да бъде свързан с множество учители.
Тя е представена от линия между класовете, последвана от стрелка, която навигира посоката, и когато стрелката е от двете страни, това се нарича двупосочна асоциация. Можем да уточним множествеността на асоциацията, като добавим декорациите на линията, която ще означава асоциацията.
Пример:
1) Един учител има няколко ученици.
2) Един ученик може да се свърже с много учители.
Композицията и агрегацията са две подгрупи на асоцииране. И в двата случая обектът от един клас е собственост на обект от друг клас; единствената разлика е, че при композицията детето не съществува независимо от своя родител, докато при агрегацията детето не е зависимо от своя родител, т.е. самостоятелно. Агрегацията е специална форма на асоцииране, а композицията е специалната форма на агрегация.
Агрегиране
Агрегацията е подмножество на асоцииране, е колекция от различни неща. Това представлява има връзка. То е по-специфично от асоциация. Описва връзка част-цяло или част от. Това е двоична асоциация, т.е. включва само два класа. Това е вид връзка, в която детето е независимо от родителя си.
Например:
Тук разглеждаме автомобил и пример за колело. Една кола не може да се движи без колело. Но колелото може да се използва самостоятелно с велосипед, скутер, велосипед или всяко друго превозно средство. Обектът колело може да съществува без обекта кола, което се оказва връзка на агрегиране.
Състав
Композицията е част от агрегацията и изобразява връзката цяло-част. Той изобразява зависимостта между композит (родител) и неговите части (деца), което означава, че ако композитът бъде изхвърлен, неговите части също ще бъдат изтрити. Съществува между подобни обекти.
Както можете да видите от дадения по-долу пример, връзката на асоцииране на състава свързва класа Person с класа Brain, класа Heart и класа Legs. Ако човекът бъде унищожен, мозъкът, сърцето и краката също ще бъдат изхвърлени.
Асоциация срещу агрегиране срещу състав
| Асоциация | Агрегиране | Състав |
|---|---|---|
| Асоциативната връзка е представена със стрелка. | Връзката на агрегиране е представена от права линия с празен ромб в единия край. | Композиционната връзка е представена от права линия с черен диамант в единия край. |
| В UML може да съществува между два или повече класа. | Това е част от асоциативната връзка. | Това е част от връзката на агрегиране. |
| Той включва асоцииране 'един към един', 'един към много', 'много към едно' и 'много към много' между класовете. | Проявява един вид слаба връзка. | Проявява силен тип връзка. |
| Може да асоциира още един обект заедно. | В връзката на агрегиране асоциираните обекти съществуват независимо в рамките на обхвата на системата. | В композиционна връзка асоциираните обекти не могат да съществуват независимо в рамките на обхвата на системата. |
| При това обектите са свързани помежду си. | При това свързаните обекти са независими един от друг. | Тук свързаните обекти са зависими един от друг. |
| Това може или не може да засегне другия свързан елемент, ако един елемент бъде изтрит. | Изтриването на един елемент в връзката на агрегиране не засяга други свързани елементи. | Това засяга другия елемент, ако един от свързаните с него елементи бъде изтрит. |
| Пример: Преподавател може да се асоциира с множество ученици или един ученик може да се асоциира с множество учители. | Пример: Колата се нуждае от колело за правилното си функциониране, но може да не изисква същото колело. Може да работи и с друго колело. | Пример: Ако файл е поставен в папка и тази папка е изтрита. Файлът, намиращ се в тази папка, също ще бъде изтрит по време на изтриването на папката. |