Описание тега state-machines
Конечный автомат - это абстрактная машина, которая обладает
- Состояние (что делает система)
- Переходы (какие входы вызывают, какие состояния происходят)
- Действия при входе (что происходит при входе в состояние)
- Выходные действия (аналог входных действий)
В результате система может динамически изменять свое поведение в зависимости от того, что она в данный момент делает и какой ввод получает - это позволяет конечным автоматам моделировать многие типы систем. (Знакомый пример - Regex - Perl, Python, Tcl, .NET, и большинство других реализаций используют конечный автомат внутренне).
Например, рассмотрим принтер, который может либо ожидать задания, либо распечатывать его (состояния), и может начать печать, когда задание получено, и начать ожидание, когда оно выполнено с текущим заданием (переходы). Уведомление об отправке - это выходное действие для состояния "Печать", чтобы уведомить очередь печати о том, что оно выполнено.
(Вышеприведенная диаграмма в формате SDL - UML также популярен для представления диаграмм состояний).