6-交互作用图

6.0 交互作用图

包括顺序图和通信图,为系统的动态方面建模。交互作用图描述了对象间的交互作用,由对象、对象间的关系组成

顺序图和通信图以不同的方式表达了类似的信息。顺序图描述消息的时间顺序,适合于描述实时系统和复杂的脚本;通信图描述对象间的关系。两者在语义上相当,彼此转换而不损失信息

6.0.1交互作用图主要组成元素

  1. 对象
  2. 连接
  3. 消息
  4. 包含注释和约束

6.0.1交互图示例

顺序图

交互作用的图 R语言 交互作用图表_交互作用的图 R语言

通信图

交互作用的图 R语言 交互作用图表_时序图_02

6.1 顺序图

存在两个轴,水平轴表示不同的对象,垂直轴表示时间。

顺序图标识元素

顺序图的五要素是:活动者、对象、生命线、控制焦点、消息

  1. 对象:带垂直虚线的矩形框
  2. 垂直虚线:对象的生命线
  3. 对象间通信:对象的生命线间画消息

消息(重要)

可以是信号、操作调用等。当收到消息,接收对象执行相应的活动,对象生命线上细长矩形框表示对象激活。

消息以带标签的箭头表示,省去序列号,可带条件表达式,即互斥的分支。

交互作用的图 R语言 交互作用图表_通信_03

  • 简单消息是从一个对象到另一个对象的控制流的转移。
  • 同步消息是消息发出了以后,发送对象必须等到接收对象的应答,才能继续自己的操作。
  • 异步消息是消息发出了以后,发送对象不必等到接收对象的应答,就可以继续自己的操作。

对象生命线

垂直的虚线,对象生命线代表对象创建直到结束的生命周期,生命线的终端标一个“X”。

有控制中心(激活)(重要)

细长的矩形,表示对象直接或通过子过程执行一个动作的时间段。矩形的顶端和动作的开始对齐,矩形的底部和动作的完成对齐(可以用返回消息来标记)。

顺序图实例

交互作用的图 R语言 交互作用图表_通信_04

模拟一下三国演义的赤壁之战的时序图

交互作用的图 R语言 交互作用图表_对象_05

6.2 顺序图应用

客户端发消息给PrintService,Service接着发消息给Image创建工资单,在建立工资单的打印图象时,需要雇员的信息,及工资数,而后建立打印图象。最后,Service发消息到打印接口,打印工资单。

交互作用的图 R语言 交互作用图表_时序图_06

6.3 通信图

强调参与交互作用的对象的组织。描述了交互作用的对象的静态结构(上下文),对象间交换的消息的时间顺序(交互作用) 。

区别于顺序图的特点(重要)

  1. 有路径:表示对象间如何连接
  2. 有序列号:表示消息的时间顺序,如1、1.1、2、3.4,可以是任意深度的嵌套。

通信图示例

交互作用的图 R语言 交互作用图表_时序图_07

语义等价

顺序图与通信图在语义上是等价的,因而它们可以相互转换而不损失信息。但它们显式地可视化描述了不同的信息,通信图显式描述对象间如何连接,顺序图显式描述对象间交互消息的时间顺序。

前面描述打印工资单的顺序图和通信图是等价的,可以相互转换而不损失信息。

6.6 交互作用图应用

为系统的动态方面建模,上下文(建模环境)可以是整个系统、一个子系统、一个操作或一个类,还可为用例的一个脚本建模。

按时间顺序为控制流建模

  1. 确定交互作用的上下文
  2. 确定参与交互作用的对象,按重要性从左至右放在时序图中
  3. 确定每个对象的生命线
  4. 按消息发生的时间从上到下放置在生命线间
  5. 如需规定时间或空间约束,可为消息附加适当的时间或空间约束
  6. 如想更正式地描述这个控制流,可为每个消息添加前置条件和后置条件

按组织结构为控制流建模

  1. 确定交互作用的上下文
  2. 确定参与交互作用的对象,按重要性由中间到四周放在协作图中
  3. 确定每个对象的初始特性,显示对象在交互作用期间发生的变化,用复制对象表示变化后的对象以区别于原对象(体现对象随时间的变化)
  4. 确定对象间的连接
    (i) 先布置关联连接
    (ii) 再布置其他的连接:按消息发生的时间顺序确定消息序列号,可为消息附加适当的时间或空间约束,可为消息添加前置条件和后置条件。

单个顺序图只描述一个控制流。通常,采用多个交互作用图来描述系统的动态特性,一部分描述主要过程,其它的描述备选过程或例外过程。

随堂测试

示例简介 : 
-- 使用场景 : 汽车租赁公司;
-- 使用的对象 : Customer (客户), Worker (工作人员), 
            Order (请求), Record (记录), Car (汽车);
-- 工作流程 :   ① 客户 向 工人 提出租车要求, 
                ② 工人 检查 请求, 
                ③ 客户 付款,
                ④ 工人 填写 记录,
                ⑤ 工人 取车;
绘制相应的时序图?  并将所绘制的时序图转换为协作图?

交互作用的图 R语言 交互作用图表_对象_08


交互作用的图 R语言 交互作用图表_时序图_09