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