Основные сведения о диаграмме состояний

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

Состояние – State.

Событие, которое изменяет текущее состояние – Event.

Переход из одного состояния в другое (в результате события) – Transition.

Действие, которое происходит внутри состояния или при переходе – Actions. Существует четыре возможных действия в пределах состояния:

- на входе – On Entry;

- на выходе – On Exit;

- внутри – Do;

- на переходе – On Event.

 
 

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

 
 

Состояния могут быть вложенными, то есть одно состояние (суперсостояние) может включать множество других состояний. Вместо того чтобы поддерживать одинаковые переходы (по одному на каждое состояние), их можно объединить, перенося в одно суперсостояние.

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

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

1. Включение начального состояния в суперсостояние. Именно в данной точке будет находиться объект при входе в суперсостояние.

2. Использование истории состояний (State history). В этом случае объект может выйти из суперсостояния, а затем вернуться точно в то место, откуда вышел.

 
 

Пример диаграммы состояний объекта класса Курсы:

 
 

Та же самая диаграмма с использованием суперсостояния и хронологии:

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

Переходы могут быть рефлексивными: объект переходит в то же состояние, в котором он в настоящий момент находится.

Переходы могут иметь ограждающие условия (Guard condition), которые определяют, когда переход может быть выполнен. Ограждающие условия задаются в случае, когда существует несколько переходов из одного состояния (условия обязательно должны быть взаимоисключающими).

Как состояния, так и диаграммы состояний могут быть вложены друг в друга для более детального представления отдельных элементов модели.