Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектування інформаційних систем.doc
Скачиваний:
95
Добавлен:
21.09.2019
Размер:
28.77 Mб
Скачать

23.3. Зв'язки

Зв'язок (link) є екземпляром або прикладом довільної асоціації. Зв'язок як елемент мови UML може мати місце між двома і більше об'єктами. Бінарний зв'язок на діаграмі кооперації зображається відрізком прямої лінії, що з’єднює два прямокутники об'єктів (див. рис. 23.7). На кожному з кінців цієї лінії можуть бути явно вказані імена ролей даної асоціації. Поряд з лінією в її середній частині може записуватися ім'я відповідної асоціації.

Зв'язки не мають власних імен, оскільки повністю ідентичні як екземпляри асоціації. Іншими словами, всі зв'язки на діаграмі кооперації можуть бути тільки анонімними і записуються без двокрапки перед-іменем асоціації. Для зв'язків не вказується також і кратність. Проте інші позначення спеціальних випадків асоціації (агрегація, композиція) можуть бути присутніми на окремих кінцях зв'язків. Наприклад, символ зв'язку типу "композиція" між мультиоб'єктом "Принтер" і окремим об'єктом "Принтер" (див. рис. 23.7).

23.3.1. Стереотипи зв'язків

Зв'язок може мати деякі стереотипи, які записуються поряд з одним з її кінців і вказують на особливість реалізації цього зв'язку. У мові UML для цієї мети можуть використовуватися наступні стереотипи:

  • "association" – асоціація (передбачається за замовченням, тому цей стереотип можна не вказувати).

  • "parameter" – параметр методу. Відповідний об'єкт може бути тільки параметром деякого методу.

  • "local" – локальна змінна методу. Її область видимості обмежена тільки сусіднім об'єктом.

  • "global" – глобальна змінна. Її область видимості розповсюджується на всю діаграму кооперації.

  • "self" – рефлексивний зв'язок об'єкту із самим собою, який допускає передачу об'єктом повідомлення самому собі. На діаграмі кооперації зв'язок рефлексії зображається петлею у верхній частині прямокутника об'єкту.

Деякі приклади зв'язків з різними стереотипами зображені на рис. 23.9. Тут представлена узагальнена схема деякої конкретної компанії з іменем "с", яка складається з відділів (анонімний мультиоб'єкт "Відділ"). Останні, у свою чергу, складаються із співробітників (анонімний мультиоб'єкт "Співробітник"). Зв'язок рефлексії вказує на той факт, що менеджер відділу є в той же час і його співробітником.

Примітка

Оскільки на даній діаграмі відсутні повідомлення, то вона немає, строго кажучи, діаграмою кооперації. Швидше це спеціальний випадок діаграми класів, який іноді називають діаграмою об'єктів. У разі N-арного зв'язку цей зв'язок зображається аналогічно N-арною асоціацією з використанням символу ромба.

23.4. Повідомлення

Повідомлення, як елементи мови UML, вже розглядалися раніше під час вивчення діаграми послідовності (див. розділ 21). Під час побудови діаграми кооперації вони мають деякі додаткові семантичні особливості. Повідомлення на діаграмі кооперації специфікує комунікацію між двома об'єктами, один з яких передає іншому деяку інформацію. При цьому перший об'єкт чекає, що після отримання повідомлення іншим об'єктом відбувається виконання деякої дії. Таким чином, саме повідомлення є причиною або стимулом для початку виконання операцій, відправлення сигналів, створення і знищення окремих об'єктів. Зв'язок забезпечує канал для направленої передачі повідомлень між об'єктами від об'єкту-джерела до об'єкту-одержувача.

Рис. 23.9. Графічне зображення зв'язків з різними стереотипами

Повідомлення в мові UML також специфікують ролі, які відіграють об'єкти, – відправник і одержувач повідомлення. Повідомлення на діаграмі кооперації зображаються поміченими стрілками поряд з відповідним зв'язком або роллю асоціації. Напрям стрілки вказує на одержувача повідомлення. Зовнішній вигляд стрілки повідомлення має певний сенс. На діаграмах кооперації може використовуватися один з чотирьох типів стрілок для позначення повідомлень (рис. 23.10):

Рис. 23.10. Графічне зображення різних типів повідомлень на діаграмі кооперації

  • Суцільна лінія з трикутною стрілкою (рис. 23.10, а) позначає виклик процедури або іншого вкладеного потоку керування. Може бути також використана спільно з паралельно активними об'єктами, коли один з них передає сигнал і чекає, поки не закінчиться деяка вкладена послідовність дій. Зазвичай всі такі повідомлення є синхронними, тобто ініціюються після закінчення деякої діяльності або при виконанні деякої умови.

  • Суцільна лінія з V-виглядною стрілкою (рис. 23.10, б) позначає простий потік керування. Кожна така стрілка зображає один етап в послідовності потоку керування. Зазвичай всі такі повідомлення є асинхронними.

  • Суцільна лінія з напівстрілкою (рис. 23.10, в) використовується для позначення асинхронного потоку керування. Відповідні повідомлення формуються в довільні, заздалегідь не відомі моменти часу, як правило, активними об'єктами. Зазвичай повідомлення цього типу є початковими в послідовності потоку керування і найчастіше ініціюються акторами.

  • Пунктирна лінія з V-виглядною стрілкою (рис. 23.10, г) позначає повернення з виклику процедури. Стрілки цього типу часто відсутні на діаграмах кооперації, оскільки неявно передбачається їх існування після закінчення процесу активізації деякої діяльності.