UML及软件建模 主讲人:李唯 Clx7000@163.com
Page 1 UML及软件建模 主讲人 :李 唯 clx7000@163.com
第九章协作图( secdence diagram) 什么时协作图 如何运用协作图 如何对主动对象、并发和同步建模
Page 2 第九章 协作图 (sequence diagram) 什么时协作图 如何运用协作图 如何对主动对象、并发和同步建模
概述 与顺序图一样,协作图也展示对象之间的交互关系。它绘制出对象与对 象之间的消息连接 顺序图与协作图很相似,实际上这两种图表达的是同一种信息,并且可 以将顺序图转换为等价的协作图,反之亦然 顺序图和协作图虽然都可以表示各对象间的交互关系,但它们的侧重点 不同。顺序图强调的是交互的时间顺序。协作图强调的是交互的语境与 参与交互的对象的整体组织。 顺序图用消息的几何排列关系来表达消息的时间顺序,各角色之间的相 关关系是隐含的。协作图用各个角色的几何排列图形来表示角色之间的 关系,并用消息来说明这些关系。 还可以从另外一个角度来看两种图的定义:顺序图按照时间顺序布图, 而协作图按照空间组织布图。 在实际中可以根据需要选用这两种图
Page 3 1、概述 与顺序图一样,协作图也展示对象之间的交互关系。它绘制出对象与对 象之间的消息连接。 顺序图与协作图很相似,实际上这两种图表达的是同一种信息,并且可 以将顺序图转换为等价的协作图,反之亦然。 顺序图和协作图虽然都可以表示各对象间的交互关系,但它们的侧重点 不同。顺序图强调的是交互的时间顺序。协作图强调的是交互的语境与 参与交互的对象的整体组织。 顺序图用消息的几何排列关系来表达消息的时间顺序,各角色之间的相 关关系是隐含的。协作图用各个角色的几何排列图形来表示角色之间的 关系,并用消息来说明这些关系。 还可以从另外一个角度来看两种图的定义:顺序图按照时间顺序布图, 而协作图按照空间组织布图。 在实际中可以根据需要选用这两种图
2、协作图在UML中的表示方法 对象图展示出对象和对象之间的静态关系。协作图是对象的扩展。协作图 除了展示出对象之间的关联,还显示出对象之间的消息传递。通常在协作 图中省略掉关联的名字,因为表示出关联的名字会使图变得混乱。 关联线附近的箭头线表示对象之间传递的消息,箭头指向消息接收对象。 消息名称和消息序号附在箭头线附近。消息的一般含义是触发接收消息的 对象执行它的一个操作。箭头的含义和顺序图中的一样。 add O 对象名1 对象名2 协作图图符集
Page 4 2、协作图在UML中的表示方法 对象图展示出对象和对象之间的静态关系。协作图是对象的扩展。协作图 除了展示出对象之间的关联,还显示出对象之间的消息传递。通常在协作 图中省略掉关联的名字,因为表示出关联的名字会使图变得混乱。 关联线附近的箭头线表示对象之间传递的消息,箭头指向消息接收对象。 消息名称和消息序号附在箭头线附近。消息的一般含义是触发接收消息的 对象执行它的一个操作。箭头的含义和顺序图中的一样。 :对象名2 :对象名1 add() 协作图图符集
上面说过,可以将顺序图转换为协作图。反过来也成立。因此在协 作图中也应能表示出消息的顺序。可以在消息名前面加上消息的序 号它代表该消息在消息序列中的序号。消息名和序号之间用冒号 隔开。 对象名1 2: modify () 对象名3 对象名2
Page 5 :对象名2 上面说过,可以将顺序图转换为协作图。反过来也成立。因此在协 作图中也应能表示出消息的顺序。可以在消息名前面加上消息的序 号,它代表该消息在消息序列中的序号。消息名和序号之间用冒号 隔开。 :对象名1 :对象名3
3协作图和顺序图的比较 3A)协作图和顺序图的基础一—类图示例 下面我们来绘制一张对象图来对类的实例建模,这张图协作图的基础。 遥控车钥匙 ↓搭载 车主 汽车 对类的实例建模的对象图
Page 6 3、协作图和顺序图的比较 下面我们来绘制一张对象图来对类的实例建模,这张图协作图的基础。 :汽车 :遥控车钥匙 :车主 对类的实例建模的对象图 3.1、协作图和顺序图的基础--类图示例
32入协作图示例 遥控车钥匙 b=“lock” 4: blinkLights 5: beep 3: lock 车主 汽车 对对象间消息建模得到的协作图
Page 7 :汽车 :遥控车钥匙 :车主 4:blinkLights 3.2、协作图示例 5:beep [b=“lock”] 3:lock 对对象间消息建模得到的协作图
33顺序图示例 车主 遥控车钥匙 汽车 1: getButton Press(b) 2: processKey Message(b) 4: blinkLights b=“lock” 3: lock 5: beep 和协作图等价的顺序图
Page 8 3.3、顺序图示例 :车主 :遥控车钥匙 :汽车 1:getButtonPress(b) 2:processKeyMessage(b) 4:blinkLights 5:beep [b=“lock”] 3:lock 和协作图等价的顺序图
34、状态变化和消息的嵌套 假设汽车有一个 Locked属性,其值可以是True或 False。你可以假设汽 车有两个状态,分别是 Locked和 Unlocked,如图所示。 Unlocked Lock Message Unlock message Locked 对汽车的 Locked和 Unlocked状态建模
Page 9 3.4、状态变化和消息的嵌套 假设汽车有一个Locked属性,其值可以是True或False。你可以假设汽 车有两个状态,分别是Locked和Unlocked,如图所示。 Unlocked Locked Lock Message Unlock Message 对汽车的Locked和Unlocked状态建模
我们能够在协作图中表示状态的变化。在本例中,我们在一个汽车对象 中给出oked值。然后,我们复制一个带有不同 locked值的汽车对象。把 这两外对象连接起来,再表示出从第一个对象到第二个对象的消息。用 关键字《 become》标示出这条消息。 这个例子是我们有机会来体验和协作图相关的另一个概念,使用数字系 统来表示消息之间的某些关系。到目前为止,我们已见过按顺序出现的 消息,其实消息也可能以嵌套的形式出现。你可以这样对嵌套消息编号 :首先是它所嵌入其中的消息的号码,然后是一个小数点,然后是被嵌 套的消息的号码。下图展示了状态变化和消息嵌套
Page 10 我们能够在协作图中表示状态的变化。在本例中,我们在一个汽车对象 中给出locked值。然后,我们复制一个带有不同locked值的汽车对象。把 这两个对象连接起来,再表示出从第一个对象到第二个对象的消息。用 关键字《become》标示出这条消息。 这个例子是我们有机会来体验和协作图相关的另一个概念,使用数字系 统来表示消息之间的某些关系。到目前为止,我们已见过按顺序出现的 消息,其实消息也可能以嵌套的形式出现。你可以这样对嵌套消息编号 :首先是它所嵌入其中的消息的号码,然后是一个小数点,然后是被嵌 套的消息的号码。下图展示了状态变化和消息嵌套