QP官网网址:http://www.state-machine.com
本书下载地址:
笔记有点乱,没办法,书里也是断断续续的介绍。
UML:
UML状态图:状态用节点表示,转换用弧线连接在节点间。状态节点用圆角方框表示。状态名用粗体,写在状态框顶部的名字格里。在名字下面有一个可选的内部转换格,用一条水平线分开。内部转换格包含进入动作内部转换格包含进入动作(在保留符号entry后的动作)退出动作(在保留符号 exit 后的动作)和其他内部转换(比如在图中里被 TIME_TICK触发的那些动作)。状态转换用从源状态边界指向目的状态边界的箭头表示。最低要求,一个转换必须用触发事件来做标签。触发可以有可选的多个事件参数,一个监护条件和一个动作列表。
最终状态在 UML 符号里是牛眼 (bull’s eye) 符号,通常的用法是指示状态机对象的析构(destruction)。
图1 状态图示例
状态嵌套的威力在于它被设计于用来排除可能会发生的重复。高层的active 状态被称为超状态 (superstate) ,它的抽象定义是,状态机不能直接在这个状态里,只能在它里面嵌套的某一个状态里,这个状态被称为活动子状态。 UML 和状态嵌套有关的语法说明,任何事件先被当前正在活动的子状态 (substate) 处理,如果这个子状态不能处理这个事件,状态机尝试在较高一层超状态的上下文处理这个事件。当然, UML 里的状态嵌套不限于仅一层,而且,这个处理事件的简单规则可以递归的应用于任何多层的嵌套。