1、概念
状态:是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况。
状态机:记录下给定时刻状态下的设备,他可以根据不同的输入对每个给定的变化而改变其状态或引发一个动作。
状态图(statechart Diagram):本质上是一个状态机,或者是状态机的特殊情况,它基本上是状态机中的元素的投影,这也意味着状态图包括状态机的所有特征。
2、状态图
状态
状态的组成部分
名称(Name) | 将一个状态与其他状态分开的字符串;状态也可能是匿名的,这表示它没有名称 |
进入和退出动作(Entry/Exit Action) | 在进入和退出时执行的操作 |
内部转移(Internal Transition) | 对事件做出响应,执行一定的动作,但不会发生状态的转换 |
子状态(substage) | 当状态是复合状态时 |
延迟事件(Deferred Event) | 未在本状态中处理,但不被丢弃,而是延迟到其他状态中处理的事件 |
转换
用于表示一个状态机的两个状态之间的一种关系,即一个在某初始状态的对象通过执行指定的动作并符合一定的条件下进入第二种状态。
五要素
源状态 | 转移所影响的状态;如果对象处于源状态,当对象收到转移的触发事件并且满足警戒条件(如果有)时,就可能会触发输出转移。 |
事件触发器 | 使转移满足触发条件的事件。当处于源状态的对象收到该事件时(假设已满足其警戒条件),就可能会触发转移。 |
警戒条件 | 使转移满足触发条件的事件。当处于源状态的对象收到该事件时(假设已满足其警戒条件),就可能会触发转移。 |
操作 | 可执行的、不可分割的计算过程,该计算可能直接作用于拥有状态机的对象,也可能间接作用于该对象可见的其他对象。 |
目标状态 | 在完成转移后被激活的状态。 |
类型
转换类型 | 描述 | 语法 |
外部转换 | 对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换 | 事件 ( 参数 )[ 监护条件 ]/ 动作 |
内部转换 | 对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换 | 事件 ( 参数 )[ 监护条件 ]/ 动作 |
进入转换 | 当进入某一状态时,执行相应活动 | entry/ 活动 |
退出转换 | 当离开某一状态时,执行相应活动 | exit/活动 |
还有一种状态行为:DO/活动,当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,你可能希望描述个正在进行的活动。在处于一个状态的同时,对象做着某些工作,并一直继续到被某个事件中断。