Модель состояний
Поскольку мы получили два зависящих от состояния прецедента, то для создания полной диаграммы состояний необходимо консолидировать две частичные диаграммы и рассмотреть альтернативные ветви. Полная диаграмма, содержащая последовательности событий Остановка Лифта на Этаже и Отправить Лифт, изображена на рис.11. В нее добавлены состояния, информирующие, что происходит при закрытии двери перед движением вниз. Это плоская диаграмма состояний, но ее можно превратить в иерархическую, определив надсостояния, соответствующие основным группам состояний лифта. Надсостояния и подсостояния представлены на иерархической диаграмме и описаны ниже. Диаграмма верхнего уровня (включающая события, но не действия), показана на рис.12, а полная диаграмма состояний - на рис.13. 1. Лифт Стоит. Лифт находится на этаже, необслуженных вызовов нет. Дверь лифта открыта. 2. Подготовка к Движению Вверх. Это надсостояние включает следующие подсостояния: – Дверь Закрывается перед Движением Вверх. Лифт переходит в данное состояние, когда начинает закрываться дверь перед отправлением на этаж выше; – Лифт Начинает Движение. В такое состояние лифт переходит, когда дверь уже закрыта, и он ждет запуска мотора, чтобы поехать наверх. 3. Подготовка к Движению Вниз. Это надсостояние содержит следующие подсостояния:
Рис.11. Диаграмма состояния объекта Управление Лифтом
– Дверь Закрывается перед Движением Вниз. Лифт переходит в данное состояние, когда начинает закрываться дверь перед отправлением на этаж ниже; – Лифт Начинает Движение. В такое состояние лифт переходит, когда дверь уже закрыта, и он ждет запуска мотора, чтобы поехать вниз. Рис.12. Диаграмма состояний верхнего уровня объекта Управления Лифтом
Состояния Дверь Закрывается перед Движением Вверх и Дверь Закрывается перед Движением Вниз различны, потому что различны входные события Запрос Вверх и Запрос Вниз, вызывающие переходы в данные состояния (см. рис.13). Но еще важнее, что неодинаковы также и действия при выходе из этих состояний: Вверх и Вниз. 4. Движение на Этаж. Надсостояние включает следующие подсостояния: - Лифт Едет. Лифт переходит в такое состояние, когда начинает движение вверх или вниз; - Лифт Останавливается. Переход в указанное состояние осуществляется, когда лифт приближается к этажу, на котором должен остановиться; - Дверь Лифта Открывается. Переход в это состояние совершается, когда лифт остановился на этаже и открывает дверь; - Лифт на Этаже. Переход в данное состояние производится, когда лифт полностью открыл дверь. 5. Проверка Следующего Этажа Назначения. В таком состоянии лифт проверяет, следует ему направиться на другой этаж (на какой именно и в каком направлении) или нужно перейти в состояние Нет Запросов. В последнее состояние лифт переходит, когда срабатывает таймер, запущенный в состоянии Лифт на Этаже.
|