Ноу Інти, лекція, діаграми взаємодії крупним планом

Сенс діаграми знову цілком зрозумілий, адже правда? А стереотипи зв'язків дозволяють виключити неоднозначності, які могли б бути, якби ми говорили, наприклад, про багатонаціональну розподіленої компанії.

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

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

Подивимося ж, як це виглядає на прикладі (рис. 5.18):

Чи не правда, ця спрощена модель графічного вікна проста і зрозуміла? Вікно має заголовок, робочу область і дві смуги прокрутки - горизонтальну і вертикальну, які її переміщують. Все просто!

Як бачите, всі об'єкти, відображені на діаграмі, є активними. Таких об'єкта три - це робот, піч і менеджер цеху, який зображений як композитний активний об'єкт.

Взагалі ж, якщо говорити про композитних об'єктах, то слід зазначити, що в UML 2 з'явився новий тип діаграм - композитна структурна діаграма. Вона показує внутрішню структуру елемента, включаючи точки взаємодії з іншими частинами системи. Таким чином, відображається склад і відносини між частинами, які спільними зусиллями реалізують поведінку елемента. Ось відмінний приклад композитної діаграми з Zicom Mentor (рис. 5.20).

Прекрасна модель велосипеда! Дізнаєтеся старих знайомих - композитні об'єкти?

На жаль, композитні структурні діаграми знаходяться за межами тематики іспиту UM0-100, тому більше про них ми тут говорити не будемо. Однак наостанок скажемо, що, крім внутрішніх частин, на таких діаграмах можна побачити ще одне нововведення UML 2 - порти. Порт - це збірний елемент, який представляє "видиму зовні" частина містить його елемента. Порт. як це і випливає з назви, визначає взаємодію елемента моделі з навколишнім середовищем. Порт може розміщуватися на кордоні частини, класу або композитної структури. Порт може описувати сервіси, що надаються елементом моделі (і необхідні навколишнім середовищем). Зображується порт як іменований (недарма ж ми раніше сказали "збірний") прямокутник на кордоні містить його елемента моделі (втім, іноді можна побачити символ порту і всередині символу класу - тоді кажуть, що клас має прихований порт). Щоб покінчити з цими відступами від теми, покажемо, як все це виглядає на діаграмі, і повернемося до діаграм взаємодії (рис. 5.21).

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

Рекомендації з побудови діаграм взаємодії

Яким же чином і в якій послідовності слід діяти, щоб побудувати якісну діаграму взаємодії? Починати потрібно з виділення тих і тільки тих класів, об'єкти яких беруть участь в моделируемом вами взаємодії. Потім всі об'єкти наносимо на діаграму. Слід також визначити ті об'єкти, які будуть існувати постійно, і ті, які будуть існувати тільки під час виконання ними дій в рамках модельованого взаємодії.

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

А якщо є розгалуження? Найпростіші випадки розгалужень процесу взаємодії можна показати і на одній діаграмі - пам'ятаєте приклад з різними способами платежу в залежності від вартості придивилася речі? Але при зображенні розгалужень діаграма стає складнішою для розуміння "з льоту". Потрібно дотримуватися балансу між деталізацією і складністю: краще кожен альтернативний потік управління показувати на окремій діаграмі. В такому випадку слід розглядати такі "приватні" діаграми в комплексі, як одну модель взаємодії.

Якщо ж хочеться ще більше деталізувати діаграму, можна ввести тимчасові обмеження на виконання окремих дій. Втім, для простих асинхронних повідомлень тимчасові обмеження, швидше за все, не потрібні. А от необхідність синхронізації складних потоків управління часто вимагає використання таких обмежень. Запис їх повинна слідувати правилам мови об'єктних обмежень (OCL, Object Constraint Language). Розгляд OCL виходить за рамки нашого курсу та іспиту UM0-100, для підготовки до якого він написаний. Хоча, самі того не знаючи, ми вже використовували OCL - згадайте умови в квадратних дужках під повідомленнями на діаграмі послідовностей з розгалуженням!

  • Діаграма послідовностей - діаграма взаємодії, в якій основний акцент зроблений на впорядкування повідомлень в часі.
  • Діаграма кооперації - альтернативна форма подання інформації, що міститься в діаграмі послідовностей.
  • Діаграма кооперації - діаграма взаємодій, в якій основний акцент зроблений на структурної організації об'єктів, що посилають і отримують повідомлення.
  • Існують різні типи повідомлень: синхронні, асинхронні і відповідні, втрачені і знайдені.
  • Діаграми кооперації бувають двох "рівнів" - рівня примірників і рівня специфікації.
  • Кооперація - це статична конструкція для моделювання набору сутностей, що взаємодіють один з одним.
  • З діаграмами кооперації пов'язані такі поняття, як мультіоб'екти. композитні об'єкти і активні об'єкти.

Контрольні питання

  • Чи може діаграма послідовностей містити об'єкт з лінією життя, але без фокусу управління?
  • Чим відрізняються уявлення кооперації на рівні специфікації і на рівні прикладів?
  • У чому різниця між активними і пасивними об'єктами?
  • Чим асинхронне повідомлення відрізняється від синхронного?
  • Що таке мультіоб'ект?
  • Що таке композитний об'єкт і як він пов'язаний з поняттям кооперації?
  • Як можна уникнути ускладнення діаграми взаємодії з розгалуженим потоком управління?

Схожі статті