12. Диаграмма последовательности и правила ее построения. Виды сообщений и правила их обозначения.

 

Диаграмма последовательности (sequence diagram) – отображает последовательность и время обмена сообщениями объектов между собой (взаимодействие по управлению). Строится она только для объектов – конкретных экземпляров классов. Напомним, что имена объектов должны начинаться с малой буквы и подчёркиваться. Имена классов пишутся с большой буквы. Объект может не иметь имени в явной форме, тогда он считается анонимным. Общая схема диаграммы последовательности приведена ниже.

Линия жизни объекта – пунктирная вертикальная черта, которая относится к своему объекту. На этой линии невозможно вторичное появление этого объекта после его уничтожения и освобождения ресурсов. Ось времени направлена вниз и может снабжаться временными метками.

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

          Сообщение – фрагмент информации, посылаемый одним объектом (отправителем) другому объекту (получателю).

Стереотипы сообщений

 

Разновидности сообщений:

 

В языке UML предусмотрены некоторые стандартные действия, выполняемые в ответ на получение соответствующего сообщения. Эти действия могут быть явно указаны на диаграмме последовательности в форме стереотипа рядом с сообщением, к которому относятся. В этом случае они записываются в кавычках. Используются следующие стереотипы сообщений:

 

 

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

 

Рис. 8.4.  Графическое изображение различных видов сообщений между объектами на диаграмме последовательности

 

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

 

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

 

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

 

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

 

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

 

Стереотипы сообщений:

 

«call» (вызвать) – сообщение, требующее вызова операции или процедуры принимающего объекта. Если сообщение с этим стереотипом рефлексивное, то оно инициирует локальный вызов операции у самого пославшего это сообщение объекта;

«return» (возвратить) – сообщение, возвращающее значение выполненной операции или процедуры вызвавшему ее объекту. Значение результата может инициировать ветвление потока управления;

«create» (создать) – сообщение, требующее создания другого объекта для выполнения определенных действий. Созданный объект может получить фокус управления, а может и не получить его;

«destroy» (уничтожить) – сообщение с явным требованием уничтожить соответствующий объект. Посылается в том случае, когда необходимо прекратить нежелательные действия со стороны существующего в системе объекта, либо когда объект больше не нужен и должен освободить задействованные им системные ресурсы;

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

Hosted by uCoz