惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
GbyAI
GbyAI
爱范儿
爱范儿
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Check Point Blog
M
MIT News - Artificial intelligence
量子位
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
V
Visual Studio Blog
罗磊的独立博客
F
Fortinet All Blogs
美团技术团队
博客园_首页
博客园 - 【当耐特】
L
LangChain Blog
月光博客
月光博客
腾讯CDC
The Cloudflare Blog
D
Docker
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - EpicBlue

图元:四棱锥\立方体\扇形\带孔圆盘\圆柱体\球体 - EpicBlue - 博客园 绘制图元:线段、三角形、四边形 PyOpenGL 初始化框架 PaddleDetection的CPU训练 数独计算(C#) android TCP 客户端(仅接收数据) 管理自己的电子书(2) 管理自己的电子书 排列组合的递归实现 状态机参考 附 (一)nDoc相关资源 nDoc分析 (二) BaseDocumenter nDoc分析 (一) 可怜的nDoc 求助, Acess + winform无法Update的问题 查询面板(三) 查询面板(二) 查询面板(一) 接触ADO.Net 数据库查询 一个不成熟的程序员
状态机
EpicBlue · 2006-09-06 · via 博客园 - EpicBlue

基本理解

  有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在面向对象的软件系统中,一个对象无论多么简单或者多么复杂,都必然会经历一个从开始创建到最终消亡的完整过程,这通常被称为对象的生命周期。一般说来,对象在其生命期内是不可能完全孤立的,它必须通过发送消息来影响其它对象,或者通过接受消息来改变自身。在大多数情况下,这些消息都只不过是些简单的、同步的方法调用而已。在这种情况下,当前的行为并不依赖于过去的某个状态。状态机表明当前行为依赖当前状态。

要素

  • 状态:指的是对象在其生命周期中的一种状况,处于某个特定状态中的对象必然会满足某些条件、执行某些动作或者是等待某些事件。
  • 事件:指的是在时间和空间上占有一定位置,并且对状态机来讲是有意义的那些事情。事件通常会引起状态的变迁,促使状态机从一种状态切换到另一种状态。
  • 转换:指的是两个状态之间的一种关系,表明对象将在第一个状态中执行一定的动作,并将在某个事件发生同时某个特定条件满足时进入第二个状态。这种转换由事件引起的。(可能需要其他条件的组合)
  • 动作:指的是状态机中可以执行的那些原子操作。(对于状态机来说,有进入/退出状态的动作)

复杂方面

  • 异步事件响应。(暂未处理)

代码生成

             switch                             引擎

            /         \                               |

     手写           工具          王咏武的状态机引擎

                     /       \

         Qfsm/FSME   UML

备注

  • FSME是Linux下一个基于Qt的状态机建模工具,它能够自动生成状态机框架代码,并且同时支持C++和Python语言,通过网站 http://fsme.sourceforge.net/你可以了解到有关FSME的更多信息,并能够下载最新版本的FSME。
  • Qfsm也是一个运行在Linux下的状态机建模工具,它不仅提供了可视化的状态机编辑器,而且还能够对生成的状态机进行实时模拟,通过网站 http://qfsm.sourceforge.net/可以了解到Qfsm的更多信息。

参考