状态图和活动图是状态机的两种表现形式。
利用状态机可以精确地描述对象的行为。从对象的初始状态起,开始响应事件并执行某些动作,这些事件引起状态的转换;对象在新状态下又开始响应事件和执行动作,如此连续进行直到终结状态。
状态图(StateDiagram)=状态(State)+迁移(Transition)
表示方式:状态由一个带圆角的矩形表示。
应用标签标示状态的内部活动。
语法:标签/活动表达式
UML提供的标签:
状态可以嵌套状态图,此时状态称为组成状态,否则为简单状态。入口事件表示一个入口的动作序列,它在进入状态时执行。入口事件的动作是原子的,并且先于人和内部活动或转换。出口事件表示一个出口的动作序列,它在退出状态时执行。出口事件也是原子的,它跟在所有的内部活动之后,但是先于所有的出口转换。
1.简单状态(SimpleState)
2.复合状态(CompositeState)
复合状态可以有多组状态图,每组用虚线分割开来。
并发区域(ConcurrentRegions)
状态图可以分为区域,而区域又包括退出或者当前执行的子状态。说明组合状态在某一时刻可以同时达到多个子状态。如下图刹车系统,同时进入前刹车【ApplyingFrontBrakes】状态和后刹车【ApplyingRearBrakes】状态。
3.初始状态(InitialState)
4.终止状态(FinalState)
5.结合状态(JunctionState)---《暂时未理解》
将两个转换连接成一次就可以完成的转换。
6.历史状态(HistoryState)
保存组成状态中先前被激活的状态
历史状态是一个伪状态(Pseudostate),其目的是记住从组合状态中退出时所处的子状态,当再次进入组合状态,可直接进入这个子状态,而不是再次从组合状态的初态开始。
在上图的状态图中,正常的状态顺序是:【Washing】->【Rinsing】->【Spinning】。如果是从状态【Rinsing】突然停电(PowerCut)退出,,洗衣机停止工作进入状态【PowerOff】,当电力恢复时直接进入状态【Running】。
7.退出节点(ExitPoint)
判定在状态图中的位置:工作流在此处按监护条件的取值而发生分支。表示方式:判定用空心小菱形表示。
转移(Transitions)是两个状态之间的一种关系,表示对象将在源状态(SourceState)中执行一定的动作,并在某个特定事件发生而且某个特定的警界条件满足时进入目标状态(TargetState)
活动图(ActivityDiagram)=活动(Activity)+动作(Action)+活动边(ActivityEdge)+活动节点(ActivityNode)
动作状态的特点:
对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。对象流中的对象特点:
对象流用带有箭头的虚线表示。如果箭头从动作状态出发指向对象,则表示动作对对象施加了一定的影响。如果箭头从对象指向动作状态,则表示该动作使用对象。