1、状态机
展示状态与状态转换的图。状态机包含了一个类的对象在其生命期间所有状态的序列以及对象对接收到的事件所产生的反应。
对象的状态、状态的转换、触发状态转换的事件、对象对事件的相应都可以用状态机来描述。
状态机由状态、转换、事件、活动、动作组成。
2、状态图
一个状态图表示一个状态机,主要用于表现从一个状态到另一个状态的控制流。
3、状态图内容——状态
描述了状态机所在对象动态行为的执行所产生的结果,这里的结果一般是指能影响此对象对后续事件响应的结果。状态由5部分组成
(1)名字
由一个字符串构成,用以识别不同的状态。
(2)入口/出口动作
表示进入/退出这个状态所执行的动作。入口动作的发育是entry/执行的动作;出口动作的语法是exit/执行的动作。
(3)内部转换
内部转换不会引起状态变换的状态,这个转换的触发不会导致状态的入口/出口动作被执行。
内部转换的原因有时候入口/出口动作显得是多余的。
比如:某状态的入口/出口动作分别是打开/关闭某文件,但如果用户仅仅是想更改该文件的文件名,那么,这里使用内部装换即可。
(4)延迟事件
延迟事件该状态下暂不处理,将推迟到该对象的另一个状态下事件处理队列。
(5)子状态
也就是说一个状态的内部包换其他装状态。包含子状态的状态称为复合状态,不包含子状态的称为简单状态。子状态以两种形式出现:顺序子状态和并发子状态
① 顺序状态——子状态对应的对象在其生命周期内任何时刻都只能处于一个子状态,而不能多个子状态同时发生。
如图所示:
② 并发子状态——复合状态中有2个或多个并发执行的子状态机。
4、状态图的内容——转换
转换用于对一个实体的不同状态之间的关系。当实体在第一个状态中执行一定的动作,并在某个特定事情发送并且某个特定的条件满足时进入下一个状态。
由五部分组成:源状态、目标状态、触发事件、监护条件、动作。
(1)源状态——状态机所在对象的状态的变化。也就是状态换激发前对象所处的状态。
一个装换可以有多个源状态,表示状态机所处对象中的多个控制流在转换发生时汇合成一个控制流。
(2)目标状态——由源状态要转换到的状态。
一个转换可以有多个目标状态,表示状态机所在的对象在转换被**的时刻一个控制流分解成多个控制流。多目标状态的转换通常使用活动图表示。
(3)触发事件——就是引起状态改变的事件
UML可能有无触发转换,不需要事件触发,一般当他的源状态已经完成他的活动是,无触发转换为被触发。
(4)监护条件——是一个方括号括起来的布尔表达式 ,被放在触发事件的后面。
监护条件可以引用对象对属性值和触发事件的参数。只在引起转换的触发事件发生时被赋值一次,如果该转换被重新触发,监护条件会被重新赋值。
(5)动作——就是动作的执行。
当转变被**时,它对应的动作被执行。
5、我画的机房状态图
用户登录系统时,系统的状态图