2.2活动图
动作状态的活动是原子的,不可分解
活动状态的活动是非原子的,可分解
描述活动流程的图形称为活动图(Activity Diagram)
基本要素:状态、转移、分支、泳道、对象流、分叉和汇合
状态(state)
是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况 。活动图中的状态包括动作状态
和活动状态
。
动作状态是活动图中最小单位的构造块,表示原子动作。在UML中,动作状态使用带圆端的方框表示。
活动状态表示的是可以分割的动作。它可以被分解成其他子活动或动作状态,它能够被中断,占有有限的时间。 在UML中,活动状态的表示和动作状态一样。
a:起始状态
b:终止状态
转移(transition)
是两个状态间的一种关系,表示对象将在当前状态中执行动作,并在某个特定事件发生或某个特定的条件满足时进入后继状态,使用“转移”来表达这种控制的传递关系 。 转移显示了从一个动作或活动状态到下一个动作或活动状态的路径。 在UML中用一条简单的直线表示一个转移 。
分支
用于描述基于某个条件的可选择路径
。一个分支可以有一个进入转移和两个或多个输出转移。在每条输出转移上都有条件表达式对该输出路径进行判定,当且仅当条件表达式为真时,该输出路径才有效。 在所有输出转移中,条件不能重叠,且应覆盖所有的可能 。 分支在图形上用菱形
表示,条件用文本标记在输出转移的路径上。引入分支后,除了可以描述选择结构外,还可以用来描述循环结构。
分叉(fork)和汇合(join)
在UML中使用分叉和汇合表示并行发生
的事件流。分叉表示把一个单独的控制流分成两个或多个并发的控制流
。一个分叉可以有一个进入转移和两个或多个输出转移,每一个转移表示一个独立的控制流。
汇合表示两个或多个并发控制流的同步发生,一个汇合可以有两个或多个进入转移和一个输出转移。
分叉和汇合
应该是平衡的。 分叉和汇合在图形上都使用同步条
来表示,同步条通常用一条粗的水平线表示 。
分叉表示的是一个控制流被两个或多个控制流代替,经过分叉后,这些控制流是并发进行的。汇合正好与分叉相反,表示两个或多个控制流被一个控制流代替。
泳道(swimlane)
“泳道”技术,是将一个活动图中的活动状态进行分组
,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。 “泳道”技术用来描述每个活动是由哪个对象负责完成 。
UML中,每个组被称为一个泳道,用一条垂直的实线与邻居分开。每个泳道在活动图中都有一个唯一的名称
,表示业务过程中的实体。每个活动
都明确属于一个泳道,不可以跨越泳道,而转移则可以跨越泳道。
注意:
泳道是活动图中的区域划分,根据每个活动的职责对所有活动进行划分每个泳道代表一个责任区。泳道和类并不是一一对应的关系,泳道关心的是其所代表的职责,一个泳道可能由一个类实现,也可能由多个类实现。
对象流(object stream)
包括依赖关系和对象的应用被称为对象流。对象流是动作和对象间的关联。在UML中,使用矩形表示对象,对象和动作之间使用带箭头的虚线连接,带箭头的虚线表示对象流。
对象流可用于对下列关系建模:
动作状态对对象的使用。
动作状态对对象的影响
活动可以修改对象状态
信号
是表示两个对象之间异步通信的方式。
注意:
当一个活动被执行时,对应于对象的一个方法中的若干个(或者全部的)语句的执行。一个方法可能需要多个(也可以是一个)活动来完成。一个活动只能属于一个方法。