Рисунок 3.2 – Пример составного состояния
История состояния позволяет показать, что в следующий раз, когда система попадает в указанное состояние, она должна не начинать с начала состояний, а сразу перейти на последнее состояние, из которого вышла, то есть при первом входе в некоторое состояние производятся единичные действия, которые при следующем входе проделывать уже не нужно. Например, при первом входе в режим протоколирования сообщений нужно создать файл протокола, который при последующих обращениях к этому режиму пересоздавать не нужно.
Рисунок 3.3 – Графическое представление истории состояния
в среде Rational Rose
Когда действие или деятельность в некотором состоянии завершается, поток управления сразу переходит в следующее состояние действия или деятельности. Для описания этого потока используются переходы показывающие путь из одного состояния действия или деятельности в другое.
Простой переход (simple transition) представляет собой отношение между двумя последовательными состояниями, которое указывает на факт смены одного состояния другим.
Срабатывание перехода зависит от наступления некоторого события, и от выполнения определенного условия, называемого сторожевым условием. Объект перейдет из одного состояния в другое в том случае, если произошло указанное событие и сторожевое условие приняло значение "истина".
Переход может быть направлен не только в другое состояние, но и в то же состояние, из которого он выходит. В этом случае его называют переходом в себя. При переходе в себя объект покидает исходное состояние, а затем снова входит в него. При этом всякий раз выполняются внутренние действия, специфицированные метками entry и exit.
2.1 Особенности разработки диаграммы состояний в среде IBM Rational Rose 2003
Для того чтобы построить диаграмму состояний, ее вначале необходимо создать и активизировать.
Начать построение диаграммы состояний для выбранного элемента модели или моделируемой системы в целом можно одним из следующих способов:
- щелкнуть на кнопке с изображением диаграммы состояний на стандартной панели инструментов, после чего следует выбрать представление и тип разрабатываемой диаграммы - новая диаграмма состояний.
- выделить логическое представление (Logical View) или представление вариантов использования (Use Case View) в браузере проекта и выполнить операцию контекстного меню: New
Statechart Diagram (Новая Диаграмма состояний).- раскрыть логическое представление (Logical View) в браузере проекта и выделить рассматриваемый класс, операцию класса, пакет, или раскрыть представление вариантов использования (Use Case View) и выбрать вариант использования, после чего выполнить операцию контекстного меню: New
Statechart Diagram (Новая Диаграмма состояний).- выполнить операцию главного меню: Browse
State Machine Diagram (Обзор Диаграмма состояний), после чего следует выбрать представление и тип разрабатываемой диаграммы.В результате выполнения этих действий появляется новое окно с чистым рабочим листом диаграммы состояний и специальная панель инструментов, содержащая кнопки с изображением графических элементов модели, необходимых для разработки диаграммы состояний (табл. 1). Назначение отдельных кнопок панели можно узнать из всплывающих подсказок.
Таблица 3.1 - Назначение кнопок специальной панели инструментов диаграммы состояний
По умолчанию на специальной панели инструментов могут отсутствовать кнопки с тремя последними графическими элементами из таблицы 1. При необходимости их можно добавить на специальную панель диаграммы состояний аналогично способу, рассмотренному ранее в лабораторной работе №2.
2.1.1 Добавление состояния на диаграмму состояний и редактирование его свойств
Для добавления состояния на диаграмму состояний необходимо с помощью левой кнопки мыши нажать кнопку с изображением пиктограммы состояния на специальной панели инструментов, отпустить левую кнопку мыши и щелкнуть левой кнопкой мыши на свободном месте рабочего листа диаграммы. На диаграмме появится изображение состояния с маркерами изменения его геометрических размеров и предложенным средой именем по умолчанию, которое разработчику следует изменить (рис. 3.4).
Для добавленного состояния можно открыть диалоговое окно его свойств - двойным щелчком левой кнопкой мыши на изображении этого элемента на диаграмме. В этом случае активизируется диалоговое окно со специальными вкладками, в поля которых можно занести всю информацию по данному состоянию.
Рисунок 3.4 – Разработка диаграммы состояния. Добавление состояния
Рисунок 3.5 - Диалоговое окно спецификации свойств состояния
При необходимости в диалоговом окне спецификации свойств выбранного состояния можно задать вложенное историческое состояние. Для этого следует выставить отметку у свойства State/activity history (Историческое состояние/деятельность) и нажать кнопку Apply. В результате внутри исходного состояния появится вложенное историческое состояние (рис. 3.6 а).
а)
б)Рисунок 3.6 - Добавление вложенного исторического состояния (а) и состояния глубокой истории (б) для состояния «Ожидание системы»
Чтобы обычное историческое состояние превратить в состояние глубокой истории, следует дополнительно выставить отметку у свойства Sub state/activity history (Историческое подсостояние/деятельность), которое становится доступным для редактирования после выбора первого свойства, и нажать кнопку Apply. В результате внутри исходного состояния появится вложенное состояние глубокой истории (рис. 3.6 б).
Чтобы обычное состояние превратить в композит, следует при добавлении нового состояния поместить его внутри границы того состояния, которое необходимо сделать композитным. В результате внутри исходного состояния появится новое вложенное состояние с именем NewState, которое при перемещении композита в области диаграммы состояний всегда будет находиться внутри своего композита (рис. 3.7).
Рисунок 3.7 – Композитное (составное) состояние
Рассмотренные выше действия приведены только с целью иллюстрации особенностей спецификации исторических и вложенных подсостояний.
Дополнительно можно определить следующие свойства состояний: задать текстовый стереотип состояния, определить внутренние действия на входе и выходе, а также внутреннюю деятельность. Эти свойства доступны для редактирования на вкладке General (Общие) и Actions (Действия). На вкладке Transitions (Переходы) можно определять и редактировать переходы, которые входят и выходят из рассматриваемого состояния. Последняя вкладка Swimlanes (Дорожки) служит для спецификации дорожек, которые, в контексте языка UML, определяются для диаграммы деятельности.