开篇
前两篇博客讲到了用例图和静态图,行为图显示系统中的对象的动态行为,接下来就涉及到对行为图略微详细的介绍了。
行为图用来描述系统的动态模型和对象之间的交互关系,它包括:状态图、活动图和交互图三种。
活动图(Activity Diagrams):描述满足用例要求所要进行的活动以及活动间的约束关系。这里要特别强调的是,使用活动图有利于识别系统的并行活动。
状态图(Statechart Diagrams):用来描述类的对象所有可能的状态以及事件发生时状态的转移条件。
交互图: 顾名思义,用来描述对象之间的交互关系。它又包括了序列图和协作图。序列图描述对象之间的交互顺序着重体现对象间消息传递的时间顺序;而协作图则描述对象之间的合作关系,更侧重于说明哪些对象之间有消息的传递。序列图和协作图两者是等价的,可以相互转化。
内容
一、活动图
1、简介
活动是某件事情正在进行的状态,是由一系列动作组成的执行过程,将各种活动以及活动之间的转换用图形进行表示就构成了活动图。
活动图表示在处理某个活动时,两个或者更多对象之间的过程控制流。它用来描述采取何种动作,做什么(对象状态改变)、何时发生(动作序列)、以及何处发生(泳道)。
2、作用
描述一个操作的执行过程中所完成的工作或者动作。
描述对象内部的工作。
显示如何执行一组相关的动作,以及这些动作如何影响周围对象。
描述用例的执行。
处理多线程应用。
3、组成元素
3.1活动状态图(Activity)
活动状态用于表达状态机中的非原子的运行,其特点如下:
(1)、活动状态可以分解成其他子活动或者动作状态。
(2)、活动状态的内部活动可以用另一个活动图来表示。
(3)、和动作状态不同,活动状态可以有入口动作和出口动作,也可以有内部转移。
(4)、动作状态是活动状态的一个特例,如果某个活动状态只包括一个动作,那么它就是一个动作状态。
UML中活动状态和动作状态的图标相同,但是活动状态可以在图标中给出入口动作和出口动作等信息。
3.2动作状态(Actions)
动作状态是指原子的,不可中断的动作,并在此动作完成后通过完成转换转向另一个状态。动作状态有如下特点:
(1)、动作状态是原子的,它是构造活动图的最小单位。
(2)、动作状态是不可中断的。
(3)、动作状态是瞬时的行为。
(4)、动作状态可以有入转换,入转换既可以是动作流,也可以是对象流。动作状态至少有一条出转换,这条转换以内部的完成为起点,与外部事件无关。
(5)、动作状态与状态图中的状态不同,它不能有入口动作和出口动作,更不能有内部转移。
(6)、在一张活动图中,动作状态允许多处出现。
UML中的动作状态图用平滑的圆角矩形表示,如下:
3.3动作流(Control Flow)
动作之间的转换称之为动作流,又称为决策迁移。活动图的转换用带箭头的直线表示,箭头的方向指向转入的方向。
3.4开始节点(Initial Node)
开始节点:表示成实心黑色圆点
3.5终止节点(Final Node)
分为活动终止节点(activity final nodes)和流程终止节点(flow final nodes)。
3.6分支与合并(Decision and Merge Nodes)
分支与合并用菱形表示
3.7分叉与汇合(Fork and Join Nodes)
分为水平风向和垂直方向。
对象在运行时可能会存在两个或多个并发运行的控制流,为了对并发的控制流建模,UML中引入了分叉与汇合的概念。分叉用于将动作流分为两个或多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。
3.8泳道(Partition)
泳道将活动图中的活动划分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。在活动图中,泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。在包含泳道的活动图中,每个活动只能明确地属于一个泳道。
泳道是用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道的上方可以给出泳道的名字或对象的名字,该对象负责泳道内的全部活动。泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。
4、几种图之间的区别
1,活动图和状态图的区别
(1)活动图中的状态转换不需要任何触发事件,活动图中的动作可以放在泳道中,泳道可以将模型中的活动按照职责组织起来,而状态图不可以。
(2)活动图的主要目的是描述动作及其对象的改变结果,而状态图则是以状态的概念描述对象、子系统、系统在生命周期中的各种行为。
2,活动图和流程图的区别
(1)活动图描述对象活动的顺序关系的规则,着重表现的是系统的行为
流程图描述处理过程,主要控制结构是顺序、分支、和循环,各个处理过程之间有严格的顺序和时间关系
(2)活动图能够表示并发的情形,而流程图不能
(3)活动图是面向对象,流程图是面向过程
5、机房收费系统活动图
二、状态图
1、简介
状态用于对实体在其生命周期中的各种状况进行建模,一个实体总是在有限的一段时间内保持一个状态。状态图用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转换
2、组成原素
2.1状态
状态是状态图的重要组成部分,描述了一个类对象生命周期中的一个时间段。
状态由一个带圆角的矩形表示。
2.2转换
转换用于表示一个状态机和两个状态之间的一种关系。
转换用带箭头的直线表示,一段连接源状态,箭头指向目标状态。
2.3判定
判定用来表示一个事件依据不同的监护条件有不同的影响,实际就是工作流在此处按监护条件的取值发生分支。
判定用空心菱形表示。
2.4同步
同步是为了说明并发工作流的分支与汇合,状态图和活动图都有用到。
同步用一条线段表示。
2.5事件
事件可以触发状态的改变。它发生在时间和空间上某一点,没有持续时间。
2.6初始状态和初始状态
初始状态有一个实心的圆表示。
终止状态用一个含有实心圆的空心圆表示。
3、判定和同步的区别
判定是根据监护条件是工作流分支,监护条件的取值最终只会触发一个分支的执行。
同步的不同分支是并发执行,并不会因为一个分支的执行造成其他分支的中断。
4、修改密码的状态图