У приложения может быть несколько конечных автоматов, для каждого из которых определяется собственный набор вариантов поведения приложения, подлежащих структуризации. Приложение, для которого конечные автоматы не определены, в действительности является приложением с множеством конечных автоматов; каждая переменная, определенная на уровне приложения, по сути дела сама является конечным автоматом, и любой код может получить доступ к состоянию и изменить его. Конечные автоматы используются для формирования набора взаимосвязанных переменных или вариантов поведения и их логической организации, облегчающей обработку состояний. Конечные автоматы — суть организованное поведение.

На рис. 5.1 в схематическом виде представлен конечный автомат обучающей игры, позволяющей изучать иностранные слова путем выбора одного из предлагаемых вариантов ответа. Поведение приложения разбито на пять логических состояний. Эти логические состояния существуют независимо от того, будут ли они выбраны нами для введения их определений в конечный автомат. Конечный автомат — это просто формальное описание того, как работает приложение. Она позволяет нам ясно представлять себе различные состояния, в которых может находиться приложение в процессе взаимодействия с ним пользователя.

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

Рис. 5.1. Конечный автомат для простой обучающей игры, предназначенной для изучения иностранных слов путем выбора правильного ответа из нескольких предложенных вариантов

Таблица 5.1. Варианты изменения состояний для словарной игры с множественным выбором

СостояниеВнешний вводСледующее состояние
StartScreenПользователь выбрал вариант "Next Question"AskQuestion
StartScreenПользователь выбрал вариант "Correct Answer"Запрещенный переход!
StartScreenПользователь выбрал вариант "Incorrect Answer"Запрещенный переход!
StartScreenПользователь выбрал вариант "End Game"Запрещенный переход!
AskQuestionПользователь выбрал вариант "Next Question"Запрещенный переход!
AskQuestionПользователь выбрал вариант "Correct Answer"CongratulateUser
AskQuestionПользователь выбрал вариант "Incorrect Answer"ScoldUser
AskQuestionПользователь выбрал вариант "End Game"Запрещенный переход!
CongratulateUserПользователь выбрал вариант "Next Question"AskQuestion
CongratulateUserПользователь выбрал вариант "Correct Answer"Запрещенный переход!
CongratulateUserПользователь выбрал вариант "Incorrect Answer"Запрещенный переход!
CongratulateUserПользователь выбрал вариант "End Game"StartScreen
ScoldUserПользователь выбрал вариант "Next Question"AskQuestion
ScoldUserПользователь выбрал вариант "Correct Answer"Запрещенный переход!
ScoldUserПользователь выбрал вариант "Incorrect Answer"Запрещенный переход!
ScoldUserПользователь выбрал вариант "End Game"StartScreen
Перейти на страницу:

Похожие книги