基本理解

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

 

要素

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

 

复杂方面

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

 

代码生成

             switch                             引擎

            /         \                               |

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

                     /       \

         Qfsm/FSME   UML

 

备注

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

参考

posted on 2006-09-06 12:43  EpicBlue  阅读(782)  评论(0编辑  收藏  举报