Очень важно точно знать, в каком именно порядке выполняются действия элементов диаграммы состояний. Для этого мы предлагаем вам изучить приведенный ниже алгоритм.
При срабатывании перехода выполняются следующие действия (в указанном порядке):
- Действия при выходе из состояния, начиная с текущего простого состояния, и дальше вверх по иерархии состояний, заканчивая тем сложным состоянием, на уровне иерархии которого и передается управление.
- Действие перехода.
- Действия при входе в состояние, начиная со сложного состояния, которое получает управление, и дальше, вниз по иерархии состояний, вплоть до простого состояния или псевдо-состояния, в которое передается управление.
- Если управление передается в псевдо-состояние, то выполняется код действия псевдо-состояния, а затем управление немедленно передается другому состоянию, и описанный выше алгоритм выполняется сначала.
Действия состояний и переходов выполняются за нулевое модельное время. Поэтому они не могут содержать синхронизационных операций и операций задержки и не могут вызывать методы, явно или неявно содержащие такие операции.
Давайте рассмотрим пример, приведенный на рисунке. Предположим, что состояние N является текущим простым состоянием, и срабатывает переход T1. Тогда действия выполняются в следующем порядке:
- Действие при выходе из состояния N
- Действие при выходе из состояния M
- Действие перехода T1
-
Действие состояния ветвления
Затем, в зависимости от дополнительных условий переходов, будет выбран переход T2 или T3. Если будет выбран переход T2, то выполнятся следующие действия: - Действие перехода T2
- Действие указателя начального состояния I1 (действия при входе и выходе из состояния L не выполняются, поскольку управление остается в этом состоянии)
- Действие при входе в состояние M
- Действие указателя начального состояния I2
-
Действие при входе в состояние N
Если выбирается переход T3, то выполняются следующие действия: - Действие при выходе из состояния L
- Действие при выходе из состояния K (действия состояния V не выполняются)
- Действие перехода T3
- Действие при входе в состояние S
- Действие при входе в состояние P
- Действие состояния-ветвления
- Действие при выходе из состояния P
- Действие перехода T4 (дополнительное условие перехода должно быть равно true, поскольку это единственный выход из ветвления)
- Действие при входе в состояние Q
- Действие указателя начального состояния I3
- Действие при входе в состояние R
-
Как мы можем улучшить эту статью?
-