软考-软件设计师:面向对象技术-UML:交互图:序列图(时序图、循序图、顺序图)、通信图(协作图)、活动图(流程图)

交互图

包括:

  • 序列图(时序图、循序图、顺序图)
  • 通信图(协作图)
  • 交互概览图
  • 计时图

序列图、通信图 关系

序列图 和 通信图是同构的,它们之间可以 相互转换

相同点:序列图、通信图没有本质区别,而且都与代码相关

区别:

  • 序列图:强调时序

  • 通信图:对象之间的组织关系

活动图、序列图、通信图 区别

序列图、通信图:与代码相关

活动图:从 业务的角度 展示,与代码无关

序列图(时序图、循序图、顺序图)

场景 的图像化表示,以 时间顺序 组织的对象间的 交互活动

不同于通信图的特性

  • 序列图有 对象生命线:一条垂直的 虚线,表示一个对象在一段时间内存在。

  • 序列图有 控制焦点:一个 瘦高的矩形,表示一个对象 执行一个动作所经历的时间段,既可以是直接执行,也可以是通过下级过程执行。

    • 矩形的顶部:表示动作的开始
    • 矩形的底部:表示动作的结束

例子1

提示:

  • 实线箭头:调用消息,即:调用箭头指向 类对象 的 方法,后面有 ()
  • 虚线箭头:返回消息,即:返回值 或 返回对象,后面没有 ()

步骤说明:

  • 3个对象,没有对象名,因为这里不需要

  • 1:cardInserted():CardReader 类中的某个方法,调用 ATM 的 cardInserted() 方法

  • 2:create(this):ATM 类中的某个方法,调用 Session 的 create(this) 方法。此处的 this 指 Session 对象

  • 3::略

  • 4:readCard():Session 类中的某个方法,需要调用 CardReader 的 readCard() 方法

  • 5:card:不是调用 card 方法,因为没有 ()。而是 4:readCard() 返回的对象

  • 第 6 步:需要填

  • 第 7 步:需要填

  • loop:表示循环

  • 第 8 步:需要填

  • 第 9 步:需要填

例子2

代码与图对照:

可以看出:

  • 代码:CardReader 是 Session 方法的形参,调用 CardReader 的 readCard() 方法

  • 图:Session 指向 CardReader ,并标注 readCard() 方法

  • Session 依赖 CardReader

通信图(协作图)

强调 收发消息 的对象之间的 结构组织,强调参加交互的对象的组织

不同于序列图的特性

  • 通信图有 路径。为了指出一个对象如何与另一个对象链接,可以在链的末端附上一个路径构造型

  • 通信图有 顺序号。为表示一个消息的时间顺序

例子

  • dispatchForm:Form:可以看出,前面是对象名、后面是类名

  • 1:dispatch():表示 dispatchForm 某个方法调用 aorder.dispatch() 方法

  • 1.1:getPeddleryId():

活动图(流程图)

考专业术语较多

  • 专注于系统的动态视图

  • 一个活动到另一个活动的流程。活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。

  • 对系统的 功能建模 和 业务流程建模 特别重要,并强调 对象间的控制流程

  • 起点:实心圆
  • 终点:实心圆外面套一个圈
  • 流:箭头实线
  • 并发分叉(合并分叉):从 实心长方形 出去 多个箭头实线
  • 并发汇合(合并汇合):多个箭头实线 指向 实心长方形
  • 分支:条件分支语句
  • 监护表达式:条件

例子

注意: 有两个结束点

泳道活动图

题

如下所示的UML图中,(I)是( ),(II)是( ),(III)是( )。

A、参与者 B、用例 C、泛化关系 D、包含关系
A、参与者 B、用例 C、泛化关系 D、包含关系
A、参与者 B、用例 C、泛化关系 D、包含关系

答案

  1. A
  2. C
  3. B,分析过程:
    • 方法一:椭圆 表示 用例,上面有提示
    • 方法二:其他选项都不对,只能选 B

题

如下所示的图为UML的(),用于展示某汽车导航系统中( )。
Mapping对象获取汽车当前位置(GPS Location)H的消息为( )

A、类图 B、组件图 C、通信图 D、部署图

A、对象之间的消息流及其顺序
B、完成任务所进行的活动流
C、对象的状态转换及其事件顺序
D、对象之间消息的时间顺序

A、1: getGraphic ()
B、2: getCarPos ()
C、1.1: CurrentArea()
D、2.1: getCarLocation ()

答案

第一问:C,图中有 :类名,还有调用顺序。排除 对象图(没有调用顺序)

第二问:A。B是 活动流 表示活动图,C:状态 表示 状态图,D:时间顺序 表示序列图

第三问:D,Mapping 和 GPS Location 之间是 2.1: getCarLocation ()

题

如下所示的UML图是(),图中(I)表示(),(II)表示()

A、序列图 B、状态图 C.通信图 D、活动图

A、合并分叉 B、分支 C.合并汇合 D、流

A、分支条件 B、监护表达式 C.动作名 D、流名称

答案

第一问:活动图,实心圆 开始,实心圆外套圈 为结束,有 并发分叉、并发汇合、分支

第二问:A

第三问:B


原文出处:/show_1GW102LERw10.html