
Создание новой диаграммы состояний
Для того чтобы создать новую
диаграмму состояний в ArgoUML, необходимо
кликнуть по кнопке
панели инструментов, либо в окне браузера
проекта кликнуть правой кнопкой по
необходимой модели, раскрыть меню
CreateDiagram и выбрать пункт Диаграмма
состояний.
Рис.1. Создание диаграммы состояний.
Далее следует выделить только что созданную диаграмму и задать ей имя в окне свойств, которое расположено под окном диаграммы.
Рис.2. Свойства диаграммы состояний.
Добавление нового состояния
Для создания нового состояния нужно щелкнуть по кнопке Простое состояние на панели инструментов и затем по свободному месту диаграммы. При выделении любого элемента с помощью инструмента Select (при создании элемента он выделяется автоматически) под окном диаграммы открывается окно редактирования свойств элемента.
Рис.3. Свойства простого состояния.
Д ля каждого состояния можно определять действия (как в автомате Мура). В ArgoUML можно задать 3 действия для каждого состояния: действие при входе в состояние, действие при выходе из состояния и деятельность выполнения. Для того чтобы задать действие, нужно раскрыть выпадающее меню и выбрать тип действия. Всего в ArgoUML определены 8 типов действий:
действие вызова;
действие создания;
действие уничтожения;
действие возврата;
действие отправки;
действие конечного состояния;
не интерпретируемое действие;
последовательность действий.
Для выбора типа действия следует кликнуть по одному из пунктов. В результате откроется окно редактирования действия:
Рис.4. Свойства действия входа (тип: создание объекта).
В этом окне можно задать имя действия и, собственно, содержание действия (группа script). Именно содержание многострочного поля script (в примере – «Создать объект») отобразится на диаграмме. В однострочном поле этой группы (первом по порядку) можно указать язык скрипта.
В качестве действия можно выбрать последовательность. Редактирование последовательности действий выглядит следующим образом:
Рис.5. Свойства деятельности выполнения (тип: последовательность действий)
С помощью меню слева, аналогичного меню создания действий, можно добавлять действия к последовательности. Для редактирования отдельных действий нужно кликнуть по произвольному действию 2 раза. Редактирование каждого отдельного действия аналогично редактированию единичных действий.
Псевдосостояния
Псевдосостояния – начальное и конечное состояния объекта или процесса. Каждая диаграмма состояний должна начинаться начальным состоянием и заканчиваться конечным. Для добавления на диаграмму начального и конечного состояний используются кнопки и соответственно.
Рассмотрим следующий пример. Составим диаграмму состояний для класса Order (Заказ), поскольку в нашей модели он наиболее часто будет менять свое состояние. Заказ может находиться в нескольких состояниях:
при создании заказа он переходит в состояние Инициализация, в котором выполняются некоторые предварительные действия;
после завершения инициализации заказ переходит в состояние Открыт, в котором к заказу добавляются новые пункты. Выход из этого состояния возможен или в случае отмены заказа, или в случае заполнения всех необходимых пунктов заказа;
если заполнены все необходимые пункты заказа, то он переходит в состояние Закрыт, в котором происходит выписка счета. Выход из этого состояния произойдет только после того, как счет будет выписан;
если заказ отменен, то из состояния Открыт он переходит в состояние Отменен. При выходе из этого состояния происходит удаление всех пунктов заказа.
Разместим все состояния объекта на диаграмме, в том числе начальное и конечное. Определим некоторые действия, которые выполняются в данных состояниях.
на входе в состояние Инициализация – действие «Сохранить дату заказа»;
деятельность состояния Инициализация – действие «Внести информацию о клиенте»;
на выходе из состояния Открыт – действие создания пункта заказа;
на выходе из состояния Отменен – действие «Сохранить дату отмены»;
деятельность состояния Закрыт – действие «Выписать счет».
Действие добавления пунктов
заказа, а также удаления отмененного
заказа, пока опустим. С помощью инструмента
Broom можно выровнять элементы относительно
друг друга.
Рис.6. Состояния объекта Entry.