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

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

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

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

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

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

У мові UML можуть зустрічатися кілька різновидів повідомлень, кожне з яких має своє графічне зображення (рис. 22.4).

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

Другий різновид повідомлення (рис. 22.4, б) використовується для позначення простого (не вкладеного) потоку керування. Кожна така стрілка вказує на прогрес одного кроку потоку. При цьому відповідні повідомлення звичайно є асинхронними, тобто можуть виникати в довільні моменти часу. Передача такого повідомлення звичайно супроводжується одержанням фокуса керування приймаючим об'єктом.

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

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

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

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

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