Диаграммы последовательностей и коммуникации

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

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

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

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

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

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

Рис. 5.19. Диаграмма Рис. 5.20. Расширенная диаграмма

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

Фрагмент программы на С++, соответствующий данной диаграмме может быть следующим.

class Class_C{

public: void f2(){ f3();...} void f3(){...} void f4(){...}

}C;

class Class_B {

public: int f1() { C.f2();...}

}B;

class Class_A{

public: void execute(){ int r=B.f1(); C.f4();...}

};

void main(){ Class_A A; A.execute(); }

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

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

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

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

Цикл изображается в виде рамки, в которую вписано ключевое слово loop (рис. 5.21). В квадратных скобках указывается условие выполнения цикла.

Ветвление также изображается в виде рамки, в которую вписано ключевое слово alt (рис. 5.22). Область оператора alt разделяется на части, каждая из которых имеет свое собственное условие. Если такое условие является истинным, то выполняются функции, предусмотренные в соответствующей части.

Рис. 5.21. Цикл Рис. 5.22. Ветвление

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

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

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

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

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

Пример. Диаграмма коммуникации, соответствующая диаграмме последовательностей с рис. 5.20, показана на рис. 5.23.

Рис. 5.23. Диаграмма коммуникации

Циклы моделируются вставкой после номера сообщения итерационного выражения (рис. 5.24). Итерационное выражение изображается в виде звездочки, за которой следует перечисление в квадратных скобках. Перечисление может быть опущено, если надо обозначить цикл без дальнейшей детализации.

Рис. 5.24. Циклы и условия

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: