
- •Діаграма кооперації (collaboration diagram)
- •Кооперація
- •Діаграма кооперації рівня специфікації
- •Мультиоб’єкт
- •Активний об'єкт
- •Складений об'єкт
- •Зв'язки
- •Стереотипи зв'язків
- •Повідомлення
- •Формат запису повідомлень
- •Приклад побудови діаграми кооперації
- •Завершальні рекомендації по побудові діаграм кооперації
Мультиоб’єкт
Мультиоб’єкт (multiobject) є множиною об'єктів на одному з кінців асоціації. На діаграмі кооперації Мультиоб’єкт використовується для того, щоб показати операції і сигнали, які адресовані всій множині об'єктів, а не одному. Мультиоб’єкт зображається двома прямокутниками, один з яких виступає із-за верхньої правої вершини іншого (мал. 9.5, а). При цьому стрілка повідомлення відноситься до всієї множини об'єктів, які позначають даний мультиоб’єкт. На діаграмі кооперації може бути явно вказане відношення композиції між мультиоб’єктом і окремим об'єктом з його множини (мал. 9.5, б).
Мал. 9.5. Графічне зображення мультиоб’єктів на діаграмі кооперації
Активний об'єкт
У мові UML всі об'єкти діляться на дві категорії: пасивні і активні. Пасивний об'єкт оперує лише даними і не може ініціювати діяльність по управлінню іншими об'єктами. Проте пасивні об'єкти можуть посилати сигнали в процесі виконання запитів, які вони отримують.
Активний об'єкт (active object) має свій власний потік (thread) управління і може ініціювати діяльність по управлінню іншими об'єктами. При цьому потік управління може виконуватися паралельно з іншими обчислювальними потоками або потоками управління в межах одного обчислювального процесу або процесу управління.
Примітка. Відмінність між процесом і потоком полягає в мірі використання ресурсів. Кажучи про процес, мають на увазі ресурсоємний потік управління, тобто процес повністю монополізує ресурси системи. Потік може використовувати лише невелику частину ресурсів системи. Прикладом може бути виконання деякої програми в своєму адресному просторі або у фоновому режимі.
Активні об'єкти на канонічних діаграмах позначаються прямокутником з товстішими лініями (мал. 9.6). Інколи може бути явно вказане ключове слово {active}, щоб виділити активний об'єкт на діаграмі. Кожен активний об'єкт може ініціювати єдиний потік або процес управління і представляти вихідну точку потоку управління. На фрагменті діаграми кооперації активний об'єкт "а: Викликаючий абонент" є ініціатором процесу встановлення з'єднання для обміну інформацією з іншим абонентом (на діаграмі не показаний).
Мал. 9.6. Графічне зображення активного об'єкту (зліва) на діаграмі кооперації
У наступному прикладі розглядається ситуація з викликом функції друку з текстового редактора (мал. 9.7). Анонімний активний об'єкт "Текстовий редактор" спочатку посилає повідомлення анонімному мультиоб’єкту "Принтер", яке ініціює вибір єдиного об'єкту "Принтер", можливо, який задовольняє деяким додатковим умовам. Після цього вибраному об'єкту посилається повідомлення про необхідність надрукувати документ, завантажений в текстовий редактор.
Мал. 9.7. Фрагмент діаграми кооперації для виклику функції друку з текстового редактора
Складений об'єкт
Складений об'єкт (composite object) або об'єкт-контейнер призначений для представлення об'єкту, що має власну структуру і внутрішні потоки (нитки) управління. Складений об'єкт є екземпляром складеного класу (класу-контейнера), який зв'язаний відношенням агрегації або композиції зі своїми частинами. Аналогічні відношення зв'язують між собою і відповідні об'єкти.
На діаграмах кооперації такий складений об'єкт зображається як звичайний об'єкт, що складається з двох секцій. У верхній секції записується ім'я складеного об'єкту, а в нижній - його складові частини замість списку його атрибутів (мал. 9.8). При цьому частинами можуть бути інші складені об'єкти.
Мал. 9.8. Графічне зображення складеного об'єкту на діаграмі кооперації