Лекция: Диаграммы взаимодействий

 

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

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

Диаграмма последовательностей внешне напоминает табли­цу (рис. 6.18–6.19). Изображения объектов на диаграмме последовательностей помещают в верхней ее строке. Обычно инициирующий взаимодействие объект размещается слева, а остальные правее (тем дальше, чем более подчиненным является объект).

Отправления сообщений (вызовы операций) показываются горизонтальными стрелка­ми. Линия, обозначающая посылку сообщения, проводится от вертикали клиента к вертикали сервера. Первое сообщение показывается на самом высоком уровне, второе – ниже и т.д. Возвращаемое значение можно показать пунктирной стрелкой от сервера к клиенту.

Вызов операции обозначается ее именем, кроме того, здесь могут быть приведе­ны возвращаемое значение и фактические параметры, подходящие к сигнатуре операции:

N ( ) – только имя операции;

r := N (a, c) – возвращаемое значение (r), имя и фактические параметры операции – a и c.

Пример. Диаграмма последовательностей приведена на рис. 6.18. На диаграмме отражено сотрудничество трех объектов. Сценарий начинается с вызова объектом А операции f1 над объектом В. Это порождает вызов объектом В операции f2 над объектом С, что потребует вызова объектом С операции f3 над собой. Когда эта операция будет выполнена, объект В возвратит значение r объекту А, который затем вызывает операцию f4 над объектом С.

 

 

Рис. 6.18. Диаграмма последовательностей Рис. 6.19. Расширенная диаграмма

последовательностей

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

Во-первых, на них показана линия жизни объекта. Это вертикальная пунктирная линия, отражающая существование объекта во времени. Большая часть объектов, представленных на диаграмме взаимодействий, существует на протяжении всего взаимодействия, поэтому их изображают в верхней части диаграммы, а их линии жизни прорисованы сверху до низу. Объекты могут создаваться и во время взаимодействий. Линии жизни таких объектов начинаются с получения сообщения со стереотипом «create». Объекты могут также уничтожаться во время взаимодействий; в таком случае их линии жизни заканчиваются получением сообщения со стереотипом «destroy», а в качестве визуального образа используется большая буква Х.

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

Рис. 6.19 показан пример, аналогичный предыдущему, в котором, однако, объект В создается и уничтожается во время взаимодействия.

Диаграмма кооперации акцентирует внимание на структурной организации объектов, принимающих и отправляющих сообщения.

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

– направление вызова;

– вызов операции;

– порядковый номер.

Направление сообщения показывается стрелкой, указывающей на объект-сервер.

Вызов операции обозначается с использованием того же самого синтаксиса, что и на диаграмме кооперации.

Порядковый номер показывает относительный порядок посылки сообщений. Сообщение с меньшим порядковым номером посыла­ется до сообщения с большим номером. Нумерация на­чинается с единицы и добавляется как префикс к вызову опера­ции. Для отображения вложенных сообщений используется следующая нотация: 1 – первое сообщение; 1.1 – первое сообщение, вложенное в сообщение 1; 1.2 – второе сообщение, вложенное в сообщение 1, и т.д.

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

«association» – соответствующий объект видим для ассоциации;

«self» – соответствующий объект видим, потому что является диспетчером для операции (обозначение связи объекта с самим собой);

«global» – соответствующий объект видим, т.к. находится в объемлющей области видимости;

«local» – соответствующий объект видим, поскольку находится в локальной области действия операции;

«parameter» – соответствующий объект видим, т.к. является параметром операции.

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

 

 

Рис. 6.20. Диаграмма кооперации

 

Чаще всего приходится моделировать неветвящиеся последовательные пото­ки управления. Однако можно моделировать и более сложные потоки, содержа­щие итерации и ветвления.

Итерация представляет собой повторяющуюся последовательность со­общений. Ее изображение приведено на рис. 6.21: перед номером сообщения в последовательности ставится выражение итерации, например *[i := 1… n] (или просто *, если надо обозначить итерацию без дальнейшей детализации). Итерация показывает, что сообщение (и все вложенные в него сообщения) будет повторяться в соответствии со значением заданного выражения.

 

 

Рис. 6.21. Итерации Рис. 6.22. Условие

 

Условие представляет собой со­общение, выполнение которого зависит от результатов вычисления некоторого бу­левского выражения. Для моделирования условия перед порядковым номером сообщения ставится выражение, например [х>0] (рис. 6.22). У всех альтернативных ветвей будет один и тот же порядковый номер, но условия на каждой ветви должны быть заданы так, чтобы два из них не выполнялись одновременно (не перекрывались).

еще рефераты
Еще работы по информатике