Ø 什么是状态图
u 定义
1.状态图用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移。
2.状态图是系统分析的一种常见工具,用于描述系统的行为。
3.实体的生存期比较复杂时,需要状态图对其建模。
4.UML中的状态图主要用于建立对象类或对象的动态行为模型,表现一个对象所经历的状体序列,引起状态或活动转移的事件,以及因状态或活动的转移而伴随的动作。
u 符号
下面来逐一介绍。
² 状态
分为特殊状态(起始状态和终止状态)及状态
l 起始状态
初始状态是状态机的起始位置,它不需要事件的触发。一个状态图只能有一个初始状态。状态图总是以初始状态开始,以终止状态结束。
l 终止状态
结束状态表示状态机执行结束或对象生命的终结,一个状态图可以有多个结束状态。
l 状态
状态是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。其由以下几个部分组成。
1.名称name
2.进入协作和退出动作entryaction/exit action
3.内部转换internaltransition
4.状态保持不变时执行的动作do
5.子状态substate
6.延迟事件deferred event
状态机简介
状态机图描述对象在整个生命周期内,在外部事件的作用下,从一种状态转换到另一种状态的关系图。这种图的节点是状态(包括初始状态和终止状态),关系是转换。图10-1是一个典型的状态机图。
图例:
l 转移
转移是两个状态之间的关系,它表示当发生指定事件并且满足指定条件时,第一个状态中的对象将执行某些操作并进入第二个状态。当发生这种状态变更时,即“触发”了转移。在触发转移之前,可认为对象处于“源”状态;在触发转移之后,可认为对象处于“目标”状态。转移具有以下几项特征:一个转移可能有多个源状态,在这种情况下,它将呈现为一个从多个并行状态出发的结合点;一个转移也可能有多个目标状态,在这种情况下,它将呈现为一个到多个并发状态的叉形图。
转换分类:外部转换、内部转换、 自动转换、复合转换。
外部转换
外部转换是一种改变对象状态的转换,是最常见的一种转换。外部转换用从源状态到目标状态的箭头表示。
图表示:
内部转换
内部转换有一个源状态但是没有目标状态,它转换后的状态仍旧是它本身。内部转换自始至终都不离开源状态,所以没有入口动作和出口动作。因此,当对象处于某个状态,进行的一些动作时,我们可以把这些动作看成是内部转换。
在第二栏,描述了入口动作和出口动作,也描述了内部转换,要注意的是,入口动作和出口动作描述的是外部转换时发生的动作;内部转换是描述本状态没有发生改变的情况下,发生的动作。
自动转换
在没有外部事件的作用下,对象执行了某些活动后,自然而然地完成的转换。自动转换是离开某个状态后重新进入原先的状态,它会激发状态的入口动作和出口动作的执行。
复合转换
复合转换由简单转换组成,通过分支判定,把多个简单转换组合在一起。
Ø 状态图举例
Ø 活动图与状态图的区别
状态图侧重从行为的结果来描述(状态);活动图侧重从行为的动作来描述(活动)
用到UML活动图的情况:
--描述并行的过程或这行为
--描述一个算法
--描述一个跨越多个用例的活动
状态图描述了一个具体对象的可能状态以及他们之间的转换