目录
1、概念
2、组成结构
3、一般用法
4、常用建模技术
4.1、对反应型对象建模
一个状态图显示了一个状态机。在为对象的生命期建模中
活动图展示的是跨过不同的对象从活动到活动的控制流
状态图展示的是单个对象内从状态到状态的控制流。
在UML中,用状态图对一个对象按事件排序的行为建模。
1、概念
状态图 (state diagram)显示了一个状态机,它强调从状态到状态的控制流。
状态机 (state machine)是一个行为,它说明对象在它的生命期中响应事件所经历的状态序列以及它对那些事件的响应。
状态(state)是对象的生命期中的一个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。
事件(event)是对一个有意义的发生的规约,这种发生在时间和空间上占有一定位置。在状态机的语境中,事件是一次激励的发生,激励能够触发状态转移。
转移(transition)是两个状态之间的关系,它指明当特定事件发生而且特定条件满足时,在第一个状态中的对象执行一定的动作并进入第二个状态。
活动 (activity)是状态机中正在进行的执行。
动作 (action)是一个可执行的原子计算,它引起模型状态改变或值的返回。
在图形上,状态图是顶点和弧的集合。
2、组成结构
状态图通常包括:
简单状态和组合状态;
转移、事件和动作。
与所有其他图一样,状态图也可以包括注解和约束。
状态图基本上是状态机中的元素的投影。这意味着状态图可以包括分支、分岔、汇合、动作状态、活动状态、对象、初始状态、终止状态和历史状态等。
事实上,状态图可以包括状态机的任何和所有特征。
3、一般用法
反应型(或事件驱动的)对象是这样一种对象,其行为通常是由对来自其语境外部的事件所做出的反应来最佳刻画的。反应型对象在接收到一个事件之前通常处于空闲状态;当它接收到一个事件时,它的反应常常依赖于以前的事件;在这个对象对事件做出反应后,它就又变成空闲状态,等待下一个事件。对于这种对象,将着眼于对象的稳定状态,触发从状态到状态转移的事件,以及当每个状态改变时所发生的动作。
4、常用建模技术
4.1、对反应型对象建模
交互是对共同工作的对象群体的行为建模,
状态图是对一个单独的对象在它的生命期中的行为建模。
活动图是对从活动到活动的控制流建模,状态图是对从事件到事件的控制流建模。
这个对象可能处于的稳定状态、
触发从状态到状态的转移的事件
以及当每个状态改变时发生的动作。
对反应型对象的行为建模还包括对对象的生命期建模,从对象的创建时刻开始,直到它被撤销时结束,强调在其中可能发现的这个对象的稳定状态。
稳定状态表示一个条件,对象可以在该条件下存在一段可识别的时间。当一个事件发生时,这个对象可能从一个状态转移到另一个状态。这些事件也可能触发自身转移和内部的转移,其中转移的源和目标是同一个状态。在对事件或状态变化的反应中,对象可能要执行一个动作来做出响应。
上图显示了一个状态图,用于分析一个简单的与语境无关的语言,正如在向XML输入或输出消息的系统中可能发现的那样。在这种情况下,该机器被设计得能分析与语法相匹配的字符流:
message: '<' string '>' string ';'
其中,第一个串表示一个标记,第二个串表示该消息体。给定一个字符流,只有遵从这个语法的形式良好的消息才能被接受。
如图所示,这个状态机仅有3个稳定状态:Waiting、GettingToken和GettingBody。这个状态机被设计成有动作附加在转移上的米利机。
在这个状态机中仅有一种感兴趣的事件,即带有实际参数c(一个字符)对put的调用。
在Waiting状态下,该机器丢弃任何不是开始标记的字符(通过监护条件来说明)。当接收到一个开始标记时,该对象的状态就改变为GettingToken。在这个状态中,机器保存任何不是结束标记的字符(通过监护条件来说明)。当接收到一个结束标记时,该对象的状态就改变为GettingBody。在这个状态中,机器保存任何不是一个消息体结束标记的字符(通过监护条件来说明)。当接收到一个消息结束标记时,该对象的状态就改变为Waiting,并返回一个值,表示该消息已被分析过(并且机器准备接收另一个消息)。