状态图和活动图的区别
状态图侧重于行为的结果来描述
活动图侧重从行为的动作来描述
一个描述动作,一个描述状态,这样就可以比较好的理解活动图和状态图在整个系统描述上的区别,同时也能更好的去理解系统的功能。知道了这些接下来我们在分别讲状态图和活动图。
一、活动图(Statecher Diagram)
1.如何建立活动图
有人会在Retional Rose上创建活动图找不到,记住这个词就好了在Use Case View(用例视图)上新建就能找到,加油!接下来我们正式介绍活动图。
举个例子吧大家就明白了什么是状态图,用行为的结果来描述。例如当按下电灯的开关,电灯改变了它的状态;拉上卧室的窗帘改变了屋子的亮度;这就是活动到活动的控制流。
系统中对对象的状态的变化是最容易理解和发现的,因此在UML中可以使用状态图展现对象状态的变化。
2.状态图的组成
图符:
起点
终点
状态
指对象在其生命周期的一种状况。
事件
我理解的事件是促使状态的发生,发出指令或者是一种动作。
机房收费系统—状态图
二、活动图(Activity Diagram)
在UML里,活动图本质上就是流程图,它描述系统的活动、判定点和分支等,因此它们对开发人员来说是一种重要的工具。状态图描述一个对象的状态以及状态的改变,而活动图除了描述对象的状态之外,更突出了它的活动。
活动图与流程图的区别:
(1)流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间又严格的循序和时间关系;
而活动图描述的是对象活动的顺序关系遵循的规则,他着重表现得是系统的行为,而非系统的处理过程。
(2)活动图能够表示并发活动的情形,而流程图不能。
(3)活动图是面向对象的,而流程图面向的是过程。
活动图的组成元素:
UML的活动中包含的图形元素有动作状态、活动状态、动作流、分支与合并、分叉与汇合、泳道和对象流等。
1、动作状态
- 动作状态是指执行原子的、不可中断的动作,并在此动作完成后通过转换转向另一个动作
- 动作状态使用平滑的圆角矩形表示,动作状态所表示的动作写在圆角矩形内部
2、活动状态
- 活动状态用于表达状态机中的一个非原子的运行
- 活动状态的表示图标也是平滑的圆角矩形,并可以在图标中给出入口动作和出口动作等信息
3、动作流
- 所有动作状态之间的转换流称之为动作流,相当于状态图中的转换。
- 与状态图的转换相同,活动图的转换也用带有箭头的直线表示,箭头的方向指向转入的方向
- 动作流可以是无条件的,也可以是有条件的。无条件的动作流即是活动图中的普通转换(完成转换、内部转换);有条件的动作流通过分支与合并来描述
4、分支与合并
- 条件行为用分支与合并表达;
- 在活动图中分支与合并用空心小菱形表示;
- 一个分支有一个入转换和两个带掉件的出转换,出转换的条件应当是互斥的,这样可以保证只有一条出转换能够被触发;
- 一个合并有两个带条件的入转换和一个出转换,合并表示从对应的分支开始的条件行为的结束;
5、分叉与汇合
- 分叉用于将动作流氛围两个或者多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的;
- 分叉可以用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流;
- 汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才可以继续往下进行。每个汇合可以有两个或多个输入转换和一个输出转换;
- 分叉和汇合都使用加粗的水平线段表示;
6、泳道
- 泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织即对象。
- 泳道区分了负责活动的对象,明确地表示了哪些活动是由哪些对象进行的。
- 每个活动只能明确地属于一个泳道。
- 泳道用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道上方可以给出泳道的名字或对象(对象类)的名字,该对象(对象类)负责泳道内的全部活动。
- 泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。
7、对象流
对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。
对象流中的对象特点:
一个对象可以由多个动作操纵。
一个动作输出的对象可以作为另一个动作输入的对象。
在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存期的不同时间点。
表示方式:
对象流用带有箭头的虚线表示。如果箭头从动作状态出发指向对象,则表示动作对对象施加了一定的影响。如果箭头从对象指向动作状态,则表示该动作使用对象。
*对象流有两种表示方法,一种是将控制流一分为二,中间加上传送的对象或数据。
*另外一种表示方法是在两个活动节点的输入输出之间连线。