UML--行为图(状态图、活动图)

一、状态机

(一)概念
状态图和活动图是状态机的两种表现形式。利用状态机可以精确地描述对象的行为。

从对象的出事状态起,开始响应事件并执行某些动作,这些事件引起状态的转换;对象在新状态下又开始响应事件和执行动作,如此连续进行直到终结状态。

(二)组成

组成部分 内容
状态 表示一个模型在其生存期内的状况,满足某些条件、执行某些操作或等待某些事件。一个状态的生存期是有限的一个时间段
转换 表示两个不同状态之间的联系,事件可以触发状态之间的转换
事件 在某个时间产生的,可以触发状态转换的部分,如信号、对象的创建和销毁、超时和条件的改变等
活动 是在状态机中进行的一个非原子的执行,由一系列动作组成
动作 是一个可执行的原子计算,它导致状态的变更或者返回一个值

二、状态图

(一)概念
状态图(State Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应的,状态描绘了对象的动态生命周期。在对象的整个生命周期中,它的状态是会发生功能变化的,而状态机就是用来表示一个对象在它的生命周期中响应事件所发生的状态变化以及对事件的响应。

(二)组成
这里写图片描述

@机房收费系统登录-状态图
这里写图片描述

(三)状态图和活动图区别

- 状态图侧重从行为的结果来描述(状态)
- 活动图侧重从行为的动作来描述(活动)


三、活动图

(一)概念

- 活动图(Activity Diagram)是状态机的另一种表现形式。用于为一个对象在其生命周期中的行为建模。
- 活动图是一种描述系统动态行为的图,他用于描述活动的顺序,展现从一个活动到另一个活动的控制流。

(二)组成
这里写图片描述

1、动作状态
- 动作状态是指执行原子的、不可中断的动作,并在此动作完成后通过转换转向另一个动作
- 动作状态使用平滑的圆角矩形表示,动作状态所表示的动作写在圆角矩形内部
这里写图片描述

2、活动状态
- 活动状态用于表达状态机中的一个非原子的运行
- 活动状态的表示图标也是平滑的圆角矩形,并可以在图标中给出入口动作和出口动作等信息

这里写图片描述

3、动作流
- 所有动作状态之间的转换流称之为动作流,相当于状态图中的转换。
- 与状态图的转换相同,活动图的转换也用带有箭头的直线表示,箭头的方向指向转入的方向
- 动作流可以是无条件的,也可以是有条件的。无条件的动作流即是活动图中的普通转换(完成转换、内部转换);有条件的动作流通过分支与合并来描述
这里写图片描述

4、分支与合并

- 条件行为用分支与合并表达;
- 在活动图中分支与合并用空心小菱形表示;
- 一个分支有一个入转换和两个带掉件的出转换,出转换的条件应当是互斥的,这样可以保证只有一条出转换能够被触发;
- 一个合并有两个带条件的入转换和一个出转换,合并表示从对应的分支开始的条件行为的结束;
这里写图片描述

5、分叉与汇合

- 分叉用于将动作流氛围两个或者多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的;
- 分叉可以用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流;
- 汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才可以继续往下进行。每个汇合可以有两个或多个输入转换和一个输出转换;
- 分叉和汇合都使用加粗的水平线段表示;
这里写图片描述

6、泳道

- 泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织即对象。
- 泳道区分了负责活动的对象,明确地表示了哪些活动是由哪些对象进行的。
- 每个活动只能明确地属于一个泳道。
- 泳道用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道上方可以给出泳道的名字或对象(对象类)的名字,该对象(对象类)负责泳道内的全部活动。
- 泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。
这里写图片描述
7、对象流

对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。

对象流中的对象特点:

  • 一个对象可以由多个动作操纵。
  • 一个动作输出的对象可以作为另一个动作输入的对象。
  • 在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存期的不同时间点。

表示方式:
对象流用带有箭头的虚线表示。如果箭头从动作状态出发指向对象,则表示动作对对象施加了一定的影响。如果箭头从对象指向动作状态,则表示该动作使用对象。

*对象流有两种表示方法,一种是将控制流一分为二,中间加上传送的对象或数据。
这里写图片描述

*另外一种表示方法是在两个活动节点的输入输出之间连线。
这里写图片描述

注:Action旁边的小正方形叫ActionPin,用来表示Action的输入/输出管脚。

(三)活动图与流程图区别

1、流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理之间有严格的顺序和时间关系;而活动图描述的则是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。

2、活动图能够表示并发活动的情形,此时活动图给了我们选择做事顺序的自由,而流程图对活动顺序的描述固定

3、活动图是面向对象的,流程图是面向过程的。

(四)何时使用活动图?

1、分析用例。能直观清晰地分析用例,了解应当采取哪些动作以及这些动作之间的依赖关系。一张完整的活动图是所有用例的集成图。
2、理解牵涉多个用例的工作流。在难于区分不同用例而对整个系统的工作过程又十分清楚时,可以先构造活动图,然后用切片技术派生用例图。
3、处理多线程应用。采用“分层抽象,逐步细化”的原则描述多线程。

(四)何时不使用活动图?
1、显示对象间的合作。用交互图显示对象间的合作更简单直观。
2、显示对象在生命周期内的运转情况。活动图可以表示活动的激活条件,但不能表示一个对象的状态变换条件。因此,当要描述一个对象整个生命周期的运转情况时,应当使用状态图。

@机房收费系统活动图
这里写图片描述

感谢阅读,欢迎指正,请顶!

猜你喜欢

转载自blog.csdn.net/xumuyang_/article/details/80169831