Каким же образом и в какой последовательности следует действовать, чтобы построить качественную диаграмму взаимодействия? Начинать нужно с выделения тех и только тех классов, объекты которых участвуют в моделируемом вами взаимодействии. Затем все объекты наносим на диаграмму. Следует также определить те объекты, которые будут существовать постоянно, и те, которые будут существовать только во время выполнения ими действий в рамках моделируемого взаимодействия.
Так, объекты нарисованы, можно переходить к сообщениям. Возможно, чтобы лучше передать роли, играемые объектами во взаимодействии, понадобится использовать различные разновидности сообщений и стереотипы. Для уничтожения объектов, которые существуют только во время выполнения неких действий, тоже нужно предусмотреть специальные сообщения.
А если есть ветвления? Самые простые случаи ветвлений процесса взаимодействия можно показать и на одной диаграмме - помните пример с разными способами платежа в зависимости от стоимости приглянувшейся вещи? Но при изображении ветвлений диаграмма становится более сложной для понимания "с лету". Нужно соблюдать баланс между детализацией и сложностью: лучше каждый альтернативный поток управления показывать на отдельной диаграмме. В таком случае следует рассматривать такие "частные" диаграммы в комплексе, как одну модель взаимодействия.
|
|
Если же хочется еще больше детализировать диаграмму, можно ввести временные ограничения на выполнение отдельных действий. Впрочем, для простых асинхронных сообщений временные ограничения, скорее всего, не нужны. А вот необходимость синхронизации сложных потоков управления часто требует использования таких ограничений. Запись их должна следовать правилам языка объектных ограничений (OCL, Object Constraint Language). Рассмотрение OCL выходит за рамки нашего курса и экзамена UM0-100, для подготовки к которому он написан. Хотя, сами того не зная, мы уже использовали OCL - вспомните условия в квадратных скобках под сообщениями на диаграмме последовательностей с ветвлением!
Выводы
· Диаграмма последовательностей - диаграмма взаимодействия, в которой основной акцент сделан на упорядочении сообщений во времени.
· Диаграмма кооперации - альтернативная форма представления информации, содержащейся в диаграмме последовательностей.
· Диаграмма кооперации - диаграмма взаимодействий, в которой основной акцент сделан на структурной организации объектов, посылающих и получающих сообщения.
· Существуют различные типы сообщений: синхронные, асинхронные и ответные, потерянные и найденные.
|
|
· Диаграммы кооперации бывают двух "уровней" - уровня экземпляров и уровня спецификации.
· Кооперация - это статическая конструкция для моделирования набора сущностей, взаимодействующих друг с другом.
· С диаграммами кооперации связаны такие понятия, как мультиобъекты, композитные объекты и активные объекты.
Контрольные вопросы
· Может ли диаграмма последовательностей содержать объект с линией жизни, но без фокуса управления?
· Чем отличаются представления кооперации на уровне спецификации и на уровне примеров?
· В чем разница между активными и пассивными объектами?
· Чем асинхронное сообщение отличается от синхронного?
· Что такое мультиобъект?
· Что такое композитный объект и как он связан с понятием кооперации?
· Как можно избежать усложнения диаграммы взаимодействия с разветвленным потоком управления?