Что происходит, если при отображении заставки пользователь нажимает клавишу или перемещает указатель мыши, чтобы вернуть экран в состояние работа? Возвращается ли экран к исходному состоянию, наступающему сразу же после инициализации GUI-интерфейса? Или же на экране отражается последнее состояние, предшествующее моменту включения заставки? Очевидно, что в первом случае пользователь потеряет время и выполненную работу и вынужден будет возобновить ее сначала.
Диаграмма состояний позволяет учесть такую особенность. В UML применяется специальное обозначение, указывающее на то, что композитное состояние запоминает активное промежуточное состояние во время выхода объекта из композитного состояния. Это символ «н», заключенный в небольшой круг и соединенный сплошной линией со стрелкой с запоминаемым подчиненным состоянием. На рис. 8 это обозначение введено для отображения состояния Работа.
Рис. 8. История состояний, обозначенная символом «Н» в небольшом круге, показывает, что композитное состояние запоминает свое активное промежуточное состояние при выходе объекта из этого композитного состояния
|
|
На рассматриваемой диаграмме не принимались во внимание те окна, которые открываются другими — вложение состояний в иные подчиненные состояния. Если запоминаются подчиненные состояния всех уровней вложенности (как для подчиненных состояний Работа окон состояния Работа), то история состояний называется глубокой. Если запоминается только самое верхнее подчиненное состояние, история считается мелкой. Для глубокой истории в кружочке отображается надпись «Н*».
История состояния, начальное состояние (изображенное закрашенным кружочком) и конечное состояние ("глазок") называются псевдосостояниями. Они не имеют переменных состояния, набора действий и поэтому не являются "полноценными" состояниями.