Асоціація UML Vs. Агрегація Vs. Композиція [ПРИКЛАД]
Відносини в діаграмі UML використовуються для представлення зв’язку між різними речами. Зв’язок – це зв’язок між такими речами, як структурні, поведінкові або групові речі в уніфікованій мові моделювання.
Нижче наведено різні типи стандартних зв’язків в UML,
- Асоціація
- Залежність
- Узагальнення
- Реалізація
Крім них, UML дозволяє використовувати агрегацію та відношення композиції.
Асоціація UML
Це структурний зв’язок, який представляє об’єкти, які можуть бути пов’язані або асоційовані з іншим об’єктом у системі. Наступні обмеження можуть бути застосовані до зв’язку UML Association.
- {імпліцитний} – Неявні обмеження вказують на те, що зв’язок не є явним; воно базується на концепції.
- {замовлено} – Упорядковані обмеження визначають, що набір об’єктів на одному кінці асоціації є певним чином.
- {змінний} – Змінне обмеження визначає, що зв’язок між різними об’єктами в системі можна додавати, видаляти та змінювати відповідно до вимог.
- {addOnly} – Це вказує, що нові з’єднання можуть бути додані з об’єкта, який розташований на іншому кінці асоціації.
- {заморожений} – Це вказує, що коли зв’язок вставляється між двома об’єктами, його не можна змінити, доки заморожене обмеження активне для даного посилання чи з’єднання.
Ми також можемо створити клас, який має властивості UML Association; це називається асоціативним класом.
Рефлексивна асоціація
Рефлексивна асоціація є підвидом асоціативного зв'язку в UML-. У рефлексивній асоціації екземпляри одного класу можуть бути пов’язані один з одним. Екземпляр класу також називають об’єктом.
Рефлексивна асоціація стверджує, що посилання або з’єднання можуть бути присутніми в об’єктах одного класу.
Приклад:
Розглянемо приклад фрукта класу.
Клас фруктів має два екземпляри, наприклад манго та яблуко. Рефлексивна асоціація стверджує, що зв’язок між манго та яблуком може бути присутнім, оскільки вони належать до одного класу, наприклад фрукти.
Керована асоціація
Як випливає з назви, спрямована асоціація пов’язана з напрямком потоку в класах асоціацій.
У спрямованій асоціації потік спрямований. Асоціація від одного класу до іншого протікає тільки в одному напрямку.
Позначається суцільною лінією зі стрілкою.
Приклад асоціації UML:
Можна сказати, що між сервером і клієнтом існує зв’язок спрямованої асоціації.
Сервер може обробляти запити клієнта. Цей потік є односпрямованим і протікає лише від сервера до клієнта. Таким чином, зв’язок спрямованої асоціації може бути присутнім у серверах і клієнтах системи.
Композиція UML
Це не стандарт Відносини UML, але він все ще використовується в різних програмах.
Композитне агрегування – це підтип зв’язку агрегування з такими характеристиками:
- Це двостороння асоціація між об’єктами.
- Це відношення ціле/частина.
- Якщо композит видаляється, усі інші частини, пов’язані з ним, видаляються.
Композитна агрегація описується як бінарна асоціація, прикрашена заповненим чорним ромбом на кінці агрегату (цілого).
Папка може містити багато файлів, а кожен файл має лише одну батьківську папку. Якщо папку видалено, усі файли, що містяться, також видаляються.
У складеному об’єднанні об’єкт може бути частиною лише одного композиту одночасно.
Приклад композиції UML:
Наприклад, у віконній системі фрейм належить точно одному вікну. У складеному об’єднанні вся система відповідає за розміщення своїх частин, що означає, що композит повинен керувати створенням і знищенням своїх частин.
Агрегація UML
Агрегація є підтипом зв’язку асоціації в UML. Агрегація та композиція це обидва типи асоційованих відносин в UML. Відношення агрегації можна описати простими словами: «об’єкт одного класу може володіти або мати доступ до об’єктів іншого класу».
У зв’язку агрегування залежний об’єкт залишається в межах зв’язку, навіть якщо вихідний об’єкт знищено.
Приклад агрегування UML:
Розглянемо на прикладі автомобіль і колесо.
Автомобілю потрібне колесо, щоб правильно функціонувати, але колесо не завжди потребує автомобіля. Його також можна використовувати з велосипедом, велосипедом або будь-якими іншими транспортними засобами, але не з конкретним автомобілем. Тут об’єкт колесо має значення навіть без об’єкта автомобіля. Такий тип відношення називається відношенням агрегації UML.
Асоціація Vs. Агрегація Vs. Композиція
Асоціація | агрегування | Склад: |
---|---|---|
Зв'язок асоціації позначається стрілкою. | Відношення агрегації позначається за допомогою прямої лінії з пустою стрілкою на одному кінці. | Взаємозв’язок композиції позначається за допомогою прямої лінії із зафарбованою стрілкою на будь-якому з кінців. |
Асоціація може існувати між двома або більше класами в UML. | Агрегація є частиною зв’язку асоціації. | Композиція є частиною зв’язку асоціації. |
Між класами асоціацій можуть існувати асоціації один-один, один-багато, багато-один і багато-багато. | Агрегація розглядається як слабкий тип асоціації. | Композиція вважається сильним типом асоціації. |
У зв'язку асоціації один або кілька об'єктів можуть бути пов'язані один з одним. | У зв’язку агрегації об’єкти, пов’язані один з одним, можуть залишатися в системі один без одного. | У зв’язках композиції об’єкти, пов’язані один з одним, не можуть залишатися в області один без одного. |
Об'єкти пов'язані один з одним. | Пов’язані об’єкти не залежать від інших об’єктів. | Об’єкти сильно залежать один від одного. |
В асоціації UML видалення одного елемента може вплинути або не вплинути на інший пов’язаний елемент. | У UML Aggregation видалення одного елемента не впливає на інший пов’язаний елемент. | У композиції UML видалення одного елемента впливає на інший пов’язаний елемент. |
приклад: Учитель асоціюється з кількома учнями. Or вчитель дає інструкції учням. |
приклад: Автомобілю потрібне колесо, але воно не завжди потрібне. Автомобіль може нормально працювати і з іншим колесом. |
приклад: Файл розміщується всередині папки. Якщо видалити папку, файл, пов’язаний із цією папкою, також буде видалено. |
Підсумки
- Відносини - це зв'язок між речами.
- Асоціація, залежність, узагальнення та реалізація різноманітні зв'язки, надані UML.
- Окрім стандартних зв’язків, у UML використовуються композиція та агрегація.
- Агрегація та композиція є типами зв’язку асоціації в UML.
- Композиція UML є двостороннім зв’язком, який також називають бінарним зв’язком.
Перегляньте нашу статтю про найкращі інструменти UML: - Натисніть тут