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

23.2.1. Мультиоб'єкт

Мультиоб'єкт (multiobject)  це ціла множина об'єктів на одному з кінців асоціації. На діаграмі кооперації Мультиоб'єкт використовується для того, щоб показати операції і сигнали, які адресовані всій множині об'єктів, а не тільки одному. Мультиоб'єкт зображається двома прямокутниками, один з яких виступає із-за верхньої правої вершини іншого (рис. 23.5, а). При цьому стрілка повідомлення відноситься до всієї множини об'єктів, які позначають даний мультиоб'єкт. На діаграмі кооперації може бути явно вказане відношення композиції між мультиоб'єктом і окремим об'єктом з його множини (рис. 23.5, б).

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

23.2.2. Активний об'єкт

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

Активний об'єкт (active object) має свою власну „нитку” (thread) керування і може ініціювати діяльність з керування іншими об'єктами. При цьому під „ниткою” розуміється деякий полегшений потік керування, який може виконуватися паралельно з іншими обчислювальними „нитками” або „нитками” керування в межах одного обчислювального процесу або процесу керування.

Примітка

Відмінність між процесом і „ниткою” полягає в ступені використання ресурсів. Кажучи про процес, мають на увазі ресурсоємний потік керування, тобто процес повністю монополізує ресурси системи. „Нитка” може використовувати лише невелику частину ресурсів системи. Прикладом може служити виконання деякої програми в своєму адресному просторі або у фоновому режимі.

Активні об'єкти на канонічних діаграмах позначаються прямокутником з ширшими межами (рис. 23.6). Іноді може бути явно вказане ключове слово (помічене значення) {active}, щоб виділити активний об'єкт на діаграмі. Кожний активний об'єкт може ініціювати єдину „нитку” або процес керування і представляти початкову точку потоку керування. У наведеному фрагменті діаграми кооперації активний об'єкт "а: Викликаючий абонент" є ініціатором процесу встановлення з'єднання для обміну інформацією з іншим абонентом (на діаграмі не показаний).

Рис. 23.6. Графічне зображення активного об'єкту (зліва) на діаграмі кооперації

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

Рис. 23.7. Фрагмент діаграми кооперації для виклику функції друку з текстового редактора

23.2.3. Складений об'єкт

Складений об'єкт (composite object) або об'єкт-контейнер призначений для подання об'єкту, що має власну структуру і внутрішні потоки (нитки) керування. Складений об'єкт є екземпляром складеного класу (класу-контейнера), який зв'язаний відношенням агрегації або композиції (див. розділ 19) із своїми частинами. Аналогічні відношення зв'язують між собою і відповідні об'єкти.

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

Рис. 23.8. Графічне зображення складеного об'єкту на діаграмі кооперації