76
общения на них не показаны. Напомним, что данная диаграмма (равно как и все прочие) должна быть оформлена в виде именованного пакета. Строгое соблюдение правил пакетирования позволит связать пакеты рассматриваемой подсистемы, пакеты соответствующей диаграммы вариантов использования, пакеты сценариев, пакеты диаграмм классов, пакеты диаграмм последовательности передачи сообщений, и т.д., в единое целое – пакет артефактов на данной стадии проектирования программной системы.
Графически диаграмму объектов представляют в виде графа, состоящего из вершин и рёбер. Вершинами являются объекты, рёбрами – отношения ассоциации. На диаграмме объект представляется как прямоугольник с двумя секциями (см. рисунок 21).
Верхняя секция содержит в себе имя объекта и его класса, подчёркнутое сплошной линией и имеющего синтаксис:
<имя объекта>:<имя класса>
при этом:
–имя объекта – имя объекта (может быть опущено, в этом случае в первой секции пишется двоеточие и имя класса);
–имя класса– имя класса, может содержать в себе полный путь к данному классу, например, student : Academy : : Department : : Spesial.
Вторая секция содержит в себе список имён атрибутов и их значений. Каждая строка из списка имеет синтаксис:
<имя атрибута>:<тип>=<значение>
при этом:
–имя атрибута – соответствует атрибуту класса объекта;
–тип– тип атрибута соответствует типу атрибута класса объекта;
–значение – определяет значение атрибута, соответствующее состоянию данного объекта в данный момент времени.
Примечание: некоторые из атрибутов, не представляющие интереса, также могут быть опущены.
треугольник : Фигуры :: Ломаная_линия
координа-
ты_вершин=((0,0),(4,0),(4,8))
Цвет_Линии=255 Цвет_Заливки=256
77
Рисунок 21 – Объект – экземпляр класса
Приведём общие правила построения диаграммы объектов:
1)идентифицируйте прецедент (вариант использования) и сценарий с пред-
ипост условиями выполнения операций;
2)идентифицируйте классы для каждого обнаруженного сценария, а также отношения между ними (диаграмма классов и взаимодействия);
3)зафиксируйте сценарий в некоторый момент времени и изобразите все объекты, участвующие в сценарии;
4)укажите состояние и значения атрибутов каждого объекта;
5)укажите связи ассоциации (представляющие собой экземпляры существующих ассоциаций) между объектами.
Пакет фрагмента описания сценария «Выбор вида услуг при |
|
||
оплате через банкомат» |
|
|
|
: окно-экран_интерфейса |
|
: система банкомата |
|
таймер_показа=30сек |
|
|
|
|
связь_с_банком=60 сек |
|
|
|
|
|
|
|
|
идентификатор=1346 |
|
|
|
PIN-код=9876543 |
|
:сенсорная зона |
1 |
:сенсорная зона |
2 |
размерХ=10 |
|
размерХ=10 |
|
размерY=30 |
|
размерY=30 |
|
режим_мигания=1 |
|
режим_мигания=0 |
|
сообщение= «Получить деньги» |
сообщение= «Отмена» |
|
|
|
Рисунок 22 – Диаграмма объектов |
|
|
2.3.7. Диаграммы состояний
Диаграмма состояний описывает все возможные состояния объектов, определяемые событиями, а также процесс смены состояний объекта в результате влияния некоторых событий. Диаграммы такого рода описывают динамику системы и особенно важны при моделировании поведения интерфейса, класса или группы классов, связанных с целью выполнения сценария. Количество сценариев необязательно соответствует количеству диаграмм состояний. Так как одно из состояний объекта может быть использовано в нескольких сценариях, то, используя принцип вложенности пакетов, мы можем применять в текущей диаграмме состояний ранее описанные и пакетированные диаграммы состояний объектов.
78
Основное внимание при описании состояний уделяется порядку возникновения событий. Диаграмма состояний предназначена для моделирования поведения реактивных объектов. Реактивным называется объект, поведение которого выражается в реакции (т.е. ответных действий) на внешние события. Описание последовательности состояний, через которые проходит объект на протяжении своего жизненного цикла, реагируя на события, в том числе описание реакций на эти события, называется автомат (State machine). Как правило, реактивный объект находится в состоянии ожидания, пока не получит событие, после чего его реакция зависит от предшествующих событий (поведение автомата).
Как мы знаем, способы реакции объекта на события (сообщения) предписывается при определении конструкторов класса. Таким образом, диаграмма состояний может являться моделью для описания операторов в конструкторах классов.
Диаграмма состояний изображается в виде алгоритма поведения объектов (см. рисунок 23), в котором представлен поток управления от одного состояния объекта к последующему состоянию. Элементы описания поведения системы:
1)устойчивые состояния (например: ожидание, сброс, проверка и т.д.);
2)события, инициирующие смену состояния;
3)действия, выполняемые при каждой смене состояния;
4)переходы в другие состояния.
Состояние объекта – статус, при котором параметры объекта удовлетворяет некоторому условию, объект осуществляет определенную деятельность или ожидает какого-то события. Состояния простые – состояние, которое не имеет внутренней, вложенной структуры.
Состояние составное – состояние, у которого есть вложенные состояния, может содержать как параллельные (независимые), так и последовательные (непересекающиеся) автоматы. В UML составное состояние изображается так же, как и простое, но в котором показан вложенный автомат.
Событие − сообщение объекту, способное вызвать срабатывание перехода. Переход − отношение между двумя состояниями, показывающее, что объект,
находящийся в первом состоянии, должен выполнить некоторые действия и перейти во второе состояние, если произойдёт определённое событие и(или) будут выполнены заданные условия.
Действие − элементарное вычисление в рамках одного состояния, которое приводит к смене текущего состояния. Деятельность − это продолжающиеся элементарные вычисления внутри автомата.
79
При изображении диаграммы состояний следует:
1)именовать диаграмму, соответственно назначению (например, сценарию);
2)смоделировать состояния объекта;
3)указать переходы между состояниями.
На рисунке 23 «деятельностью» будут являться дуги: «Собрать комплект и сдать в приёмную комиссию»; «Пройти курс подготовки» и т.д. Дуга перехода от состояния «Подача документов в вуз» к состоянию «Подготовка к экзаменам» означает выполнение некоторого действия «Подтверждение факта сдачи доку-
ментов абитуриентом в приёмную комиссию». Так как «масштаб» данной диа-
граммы не предусматривает описание столь элементарных примитивов, то такое действие «скрыто» на текущей стадии описания поведения объектов. Декомпо-
зировать указанное элементарное действие мы можем посредством диаграммы деятельностей. Итак, если на диаграмме состояний представлен поток управле-
ния от состояния к состоянию, то на диаграмме деятельности показывают поток управления от деятельности к деятельности.
|
80 |
|
Пакет: Сценарий удачного поступления в вуз |
|
|
Поступление абитуриента в вуз |
Собрать комплект |
|
|
||
|
и сдать в приём- |
|
|
ную комиссию |
|
Начальное |
|
|
состояние |
|
|
|
Подача документов в |
|
Пройти курс |
вуз |
|
подготовки |
|
|
|
Выполнить |
|
Подготовка к экзаменам |
испытательные |
|
задания по всем |
||
|
||
|
предметам |
|
|
Сдача экзаменов |
|
Пройти |
|
|
собеседование |
|
|
Зачисление вуз |
конечное |
|
|
||
|
состояние |
|
Рисунок 23 – Диаграмма состояний |
||
Одним из экземпляров диаграммы состояний на рисунке 23 может являться описание события «получение низкой оценки» в состоянии «Сдача экзаменов» и переход к начальному состоянию.
2.3.8. Диаграммы деятельностей
Диаграмма деятельностей (Activity diagram) визуализирует процесс от перехода до перехода, т.е. так же, как и диаграмма состояний моделирует поведение системы, но на более детальном уровне. Деятельность (Activity) − это продолжающийся во времени неатомарный шаг вычислений в автомате. Деятельности в конечном счёте приводят к выполнению некоего действия, которое изменяет состояние моделируемого объекта. Действие может заключаться в вызове другой операции, посылке сигнала, создании или уничтожении объекта либо в простом вычислении, например значения выражения. Важно: на диаграмме деятельности следует отражать операции, соответствующие фокусу активности одного объекта на диаграмме последовательностей (алгоритм его функций и методов).