
- •Діаграма кооперації (collaboration diagram)
- •Кооперація
- •Діаграма кооперації рівня специфікації
- •Мультиоб’єкт
- •Активний об'єкт
- •Складений об'єкт
- •Зв'язки
- •Стереотипи зв'язків
- •Повідомлення
- •Формат запису повідомлень
- •Приклад побудови діаграми кооперації
- •Завершальні рекомендації по побудові діаграм кооперації
Зв'язки
Зв'язок (link) є екземпляром довільної асоціації. Зв'язок як елемент мови UML може мати місце між двома і більш об'єктами. Бінарний зв'язок на діаграмі кооперації зображається суцільною лінією, що з’єднює два прямокутники об'єктів (див. мал. 9.7). На кожному з кінців цієї лінії можуть бути явно вказані імена ролей даної асоціації. Поряд з лінією по-середні може записуватися ім'я відповідної асоціації.
Зв'язки не мають власних імен, оскільки повністю ідентичні як екземпляри асоціації. Іншими словами, всі зв'язки на діаграмі кооперації можуть бути лише анонімними і записуються без двокрапки перед іменем асоціації. Для зв'язків не вказується також і кратність. Проте інші позначення спеціальних випадків асоціації (агрегація, композиція) можуть бути присутніми на кінцях зв'язків. Наприклад, зв'язок типу "композиція" між мультиоб’єктом "Принтер" і окремим об'єктом "Принтер" (див. мал. 9.7).
Стереотипи зв'язків
Зв'язок може мати деякі стереотипи, які записуються поряд з одним з його кінців і вказують на особливість реалізації даного зв'язку. У мові UML для цієї мети можуть використовуватися наступні стереотипи:
•"association" – асоціація (припускається за замовчуванням, цей стереотип можна не вказувати).
•"parameter" – параметр методу. Відповідний об'єкт може бути лише параметром деякого методу.
•"local" – локальна змінна методу. Її зона видимості обмежена лише сусіднім об'єктом.
•"global" – глобальна змінна. Її зона видимості поширюється на всю діаграму кооперації.
•"self" –рефлексивний зв'язок об'єкту з самим собою, який допускає передачу об'єктом повідомлення самому собі. На діаграмі кооперації зв'язок рефлексії зображається петлею у верхній частині прямокутника об'єкту.
Деякі приклади зв'язків з різними стереотипами зображені на мал. 9.9. Тут представлена узагальнена схема деякої конкретної компанії з ім'ям "С", яка складається з відділів (анонімний мультиоб’єкт "Відділ"). Останні, у свою чергу, складаються із співробітників (анонімний мультиоб’єкт "Співробітник"). Рефлексивний зв'язок вказує на той факт, що менеджер відділу є і його співробітником.
Мал. 9.9. Графічне зображення зв'язків з різними стереотипами
Примітка. Оскільки на даній діаграмі відсутні повідомлення, то вона не є, строго кажучи, діаграмою кооперації. Швидше це спеціальний випадок діаграми класів, який інколи називають діаграмою об'єктів. Для зображення N-арного зв'язку використовують символ ромба аналогічно N-арній асоціації.
Повідомлення
Повідомлення, як елементи мови UML, вже розглядалися раніше при вивченні діаграми послідовності (див. главу 8). При побудові діаграми кооперації вони мають деякі додаткові семантичні особливості. Повідомлення на діаграмі кооперації специфікує комунікацію між двома об'єктами, один з яких передає іншому деяку інформацію. При цьому перший об'єкт чекає, що після отримання повідомлення другим об'єктом послідує виконання деякої дії. Таким чином, сáме повідомлення є причиною для початку виконання операцій, відправки сигналів, створення і знищення окремих об'єктів. Зв'язок забезпечує канал для направленої передачі повідомлень між об'єктами.
Мал. 9.10. Графічне зображення різних типів повідомлень на діаграмі кооперації
Повідомлення в мові UML також специфікують ролі, які грають об'єкти, - відправник і одержувач повідомлення. Повідомлення на діаграмі кооперації зображаються поміченими стрілками поряд з відповідним зв'язком або роллю асоціації. Напрям стрілки вказує на одержувача повідомлення. На діаграмах кооперації може використовуватися один з чотирьох типів стрілок для позначення повідомлень (мал. 9.10):
1. Суцільна лінія з трикутною стрілкою (мал. 9.10, а) позначає виклик процедури або іншого вкладеного потоку управління. Може бути також використана разом з паралельно активними об'єктами, коли один з них передає сигнал і чекає, поки не закінчиться деяка вкладена послідовність дій. Зазвичай всі такі повідомлення є синхронними, тобто ініціюються після закінчення деякої діяльності або при виконанні деякої умови.
2. Суцільна лінія з V-подібною стрілкою (мал. 9.10, б) позначає простий потік управління. Кожна така стрілка зображає один етап в послідовності потоку управління. Зазвичай всі такі повідомлення є асинхронними.
3. Суцільна лінія з напівстрілкою (мал. 9.10, в) використовується для позначення асинхронного потоку управління. Відповідні повідомлення формуються в довільні, заздалегідь не відомі моменти часу, як правило, активними об'єктами. Зазвичай повідомлення цього типу є початковими в послідовності потоку управління і найчастіше ініціюються акторами.
4. Пунктирна лінія з V-подібною стрілкою (мал. 9.10, г) позначає повернення з виклику процедури. Стрілки цього типу часто відсутні на діаграмах кооперації, оскільки неявно передбачається їх існування після закінчення процесу активізації деякої діяльності.