Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Представление

При моделировании взаимодействия обычно включают как объекты, каждый из которых играет свою роль, так и сообщения, каждое из которых представляет обмен данными между объектами, в результате чего выполняются определенные действия.

Участвующие во взаимодействии сообщения и объекты можно визуализировать двумя способами: акцентируя внимание на временной упорядоченности сообщений или на структурной организации объектов, посылающих и принимающих сообще­ния. В UML первый тип называется диаграммами последовательностей, а второй -диаграммами кооперации; те и другие являются разновидностью диаграмм взаи­модействий (см. главу 18).

Диаграммы последовательностей и кооперации являются изоморфными, то есть могут быть преобразованы друг в друга без потери информации. Однако между ними существуют визуальные различия. Диаграммы последовательностей обес­печивают моделирование линии жизни объекта, которая описывает его существо­вание в определенный промежуток времени - возможно, включая моменты созда­ния и уничтожения объекта. Диаграммы кооперации позволяют моделировать структурные связи, существующие между объектами, которые участвуют во взаи­модействии.

Типичные приемы моделирования Поток управления

Чаще всего взаимодействия используют для моделирования потока управления, характеризующего поведение системы в целом, включая прецеденты (см. главу 16), образцы, механизмы и каркасы (см. главу 28), поведение одного класса или отдель­ной операции (см. главы 4 и 9). При этом классы, интерфейсы (см. главу 11), ком­поненты (см. главу 25), узлы (см. главу 26) и отношения между ними моделируют статические аспекты системы, а взаимодействия - ее динамические аспекты (для моделирования последних используются также автоматы, см. главу 21).

Моделируя взаимодействия, вы, по сути дела, описываете последовательности Действий, выполняемых объектами из некоторой совокупности. Для выявления

(осмысления взаимодействий очень полезно применение CRC-карточек. Моделирование потока управления состоит из следующих шагов:

1. Определите контекст взаимодействия, будь то система в целом, одиночный класс или отдельная операция.

2. Опишите сцену, на которой будет происходить взаимодействие. Для этого нужно идентифицировать объекты, играющие какую-либо роль, и установить их начальные свойства, в том числе значения атрибутов, состояния и роли.

3. Если в вашей модели внимание акцентируется на структурной организации объектов, идентифицируйте связи между ними, имеющие отношение к об­мену данными, который происходит во взаимодействии. При необходимо­сти опишите особенности каждой связи с помощью стандартных стереоти­пов и ограничений UML.

4. Если основное внимание уделяется временной упорядоченности, специфи­цируйте сообщения, передаваемые между объектами. В случае необходи­мости выделите разные виды сообщений, включите в описание параметры и возвращаемые значения.

5. Для передачи существенных деталей взаимодействия можно указать состо­яние и роль каждого объекта в любой момент времени.

В качестве примера на рис. 15.6 показаны объекты, взаимодействующие в кон­тексте механизма публикации и подписки (экземпляр образца проектирования observer). Вы видите три объекта: р (экземпляр класса StockQuotePublisher), si и s2 (экземпляры класса StockQuoteSubscriber). Этот рисунок является примером диаграммы последовательностей (см. главу 18), описывающей времен­ную упорядоченность сообщений.

На рис. 15.7 показана диаграмма кооперации (см. главу 18), семантически эк­вивалентная предыдущей, но описывающая структурную организацию объектов. Вы видите тот же самый поток управления, но на этот раз вместе со связями меж­ду объектами.

Советы

Моделируя взаимодействия на языке UML, помните, что они отражают дина­мические аспекты совокупности объектов. Хорошо структурированное взаимо­действие обладает следующими свойствами:

  • является достаточно простым и охватывает только такие объекты, в резуль­тате совместной работы которых достигается поведение более значимое, чем сумма его составных частей;

  • обладает четко определенным контекстом. Это может быть контекст опера­ции, класса или системы в целом;

  • является эффективным и реализует описываемое поведение при оптималь­ных затратах времени и ресурсов;

  • легко адаптируется для применения в различных задачах: элементы взаимо­действия, которые с большой вероятностью могут изменяться, должны быть изолированы, что облегчит задачу модификации в будущем;

  • доступно, не грешит запутанностью, обходится без скрытых побочных эф­фектов или неочевидной семантики.

При рисовании диаграммы взаимодействия в UML руководствуйтесь следую­щими принципами:

  • выберите аспект взаимодействия, на котором требуется акцентировать вни­мание. Это может быть либо временное упорядочение сообщений, либо их последовательность в контексте той или иной структурной организации объектов. Нельзя показать то и другое одновременно;

  • указывайте только такие свойства объектов (значения атрибутов, роли и со­стояния), которые важны для понимания взаимодействия в выбранном кон­тексте;

  • отображайте только такие свойства сообщений (параметры, семантику па­раллелизма или возвращаемое значение), которые необходимы для понима­ния взаимодействия в выбранном контексте.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]