пятница, 1 февраля 2013 г.

что такое автоматная логика

В этом состоянии пользователь может принудительно сохранить файл тогда автомат перейдет в состояние Сохраненный, если он выберет Новый файл или Открыть файл, то программа ему сообщит что файл нуждается в сохранении и даст вопрос о сохранении, при этом пользователь может отвергнуть или согласится или отменить процедуру, если он выберет Новый Файл и соглашается на сохранение то данные сохраняются и создается новый файл, при этом автомат перейдет в состояние Новый Файл который также требует чтобы данные были сохранены, в надписи при этом отображается не имя файла а некое имя представляющее новые данные

Далее пользователь производит некоторые действия в программе и изменяет данные так что они разняться с файлом это событие изменение, которое запускает переход из Сохраненный в Измененный при этом автомат выходит из состояния Сохраненный входит в Нужно Сохранение запускает действие при входе кнопка сохранения включается всегда в этом состоянии, поскольку файл нуждается в сохранении, при этом в надписи отображается звездочка (*) рядом с именем файла что означает что данные изменены.

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

Далее пользователь может либо открыть файл либо создать новый, если он открывает файл, то срабатывает переход из состояния Не Нужно Сохранение, по открытию и если файл открыт успешно, выходит из состояния Ожидание при этом запускается выходное действие включается кнопка сохранения, заходит в состояние Сохраненный через начальное состояние в Не Нужно Сохранение, при этом при входе в состояние Сохраненный в надписи начинает отображаться имя файла и запоминается последний сохраненный файл

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

Задача такова, всем известны приложения типа word, которые отслеживают изменения в файлах и не дают выйти из приложения если файл не был сохранен, gui при этом тоже реагирует и если файл открыт то его название пишется в заголовке окна, если изменен часто выводится * после имени файла, такую логику можно пытаться писать влоб, но отлаживать такой код будет сложно, долго придется выслеживать ошибки, чтобы логика соответствовала, которые еще могут в будущем проявится неожиданно, можно нанять штат тестеров и исправлять логику, а можно пойти автоматным подходом и нарисовать диаграмму состояний, она должна выглядеть примерно так:

Сегодня продолжу обсуждение возможностей библиотеки и автоматного подхода. Хочу заметить что используя автоматы можно моделировать объекты реального мира, в прошлый раз обсуждали модель телефона, таким образом можно моделировать что угодно, например: чайник, светофор, лифт, кодовая панель, телевизор, автомат продажи еды, банкомат, собака, вплоть до создания робота выполняющего разные действия. Программа тоже может являться автоматом, gui реагирует на воздействия пользователя, кнопки должны включаться выключаться в определенной последовательности. Сегодня я покажу как можно автоматизировать часть логики приложения и gui на простом примере, этот пример есть в тестах библиотеки.

Nemerle.Statechart описание 2 g CodingUnit/Nemerle.Statechart Wiki g GitHub

Комментариев нет:

Отправить комментарий