Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л7-8(Діаграма станів).doc
Скачиваний:
10
Добавлен:
15.11.2019
Размер:
583.17 Кб
Скачать

6.5. Історичний стан

Звичайний автомат не дозволяє враховувати передісторію в процесі моделювання поведінки об'єктів. Проте функціонування цілого ряду систем базується на можливості виходу з окремих станів з подальшим поверненням в цей же стан. При цьому може виявитися необхідним врахувати ту частину діяльності, яка була виконана на момент виходу з цього стану, щоб не починати її виконання спочатку. Для цього в UML існує історичний стан.

Історичний стан (history state) застосовується в контексті складеного стану. Він використовується для запам'ятовування того з послідовних підстанів, який був поточним у момент виходу із складеного стану. При цьому існує два різновиди історичного стану: недавній і давній (мал. 6.10).

Мал. 6.10. Графічне зображення недавнього (а) і давнього (б) історичного стану

Недавній історичний стан (shallow history state) позначається у формі невеликого кола, всередині з латинською буквою "Н" (мал. 6.10, а). Цей стан володіє наступною семантикою: 1) він є першим підстаном у складеному стані, і перехід ззовні в цей складений стан повинен вести безпосередньо в цей історичний стан; 2) при першому попаданні в недавній історичний стан він не зберігає жодної історії (історія порожня). При першому переході в недавній історичний стан він замінює собою початковий стан підавтомата.

Далі йде послідовна зміна вкладених підстанів. Якщо в деякий момент відбувається вихід з вкладеного стану (наприклад, в разі деякої зовнішньої події), то цей історичний стан запам'ятовує той з підстанів, який був поточним на момент виходу. При наступному вході в цей же складений стан історичний підстан вже має непорожню історію і відразу відправляє підавтомат у запам'ятований підстан, минаючи всі передуючі йому підстани.

Історичний стан втрачає свою історію в той момент, коли підавтомат доходить до свого кінцевого стану. При цьому недавній історичний стан запам'ятовує історію лише того підавтомата, до якого він відноситься.

Запам'ятований стан також може бути складеним станом. Давній історичний стан (deep history state) позначається у формі невеликого кола, з латинською буквою "Н*" (мал. 6.10, б) і призначений для запам'ятовування всіх підстанів будь-якого рівня вкладеності для поточного підавтомата.

Прикладом вживання недавнього історичного стану, є логіка роботи поштової програми-клієнта. Припустимо, при запуску програми ми є в стані написання нового повідомлення, причому набраний вже значний фрагмент тексту. Поштова програма може бути налаштована так, що у фіксовані моменти часу вона перевіряє наявність нових повідомлень на сервері провайдера. Черговий дозвон, хоча і перериває роботу редактора, не повинен привести до втрати набраного фрагмента тексту.

В цьому випадку складений стан "робота редактора" повинен містити вкладений історичний підстан, який запам'ятовує виконану роботу. Після закінчення дозвону і завантаження нової пошти (в разі її наявності) ми повинні повернутися до збереженого фрагмента нашого повідомлення і продовжити роботу редактора програми.

Діаграма станів поштової програми-клієнта (див. мал. 6.5) може бути доповнена з врахуванням розглянутого аспекту її поведінки. Читачеві пропонується це виконати самостійно як вправу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]