协作图
协作图
组成协作图的元素
2. 消息
在协作图中,可以通过一系列的消息来描述系统的动态行为。 在协作图中,消息使用带有标签的箭头来表示,它附在连接发送者 和接收者的链上。 链连接了发送者和接收者,箭头的指向便是接收者。每个消息包括一 个顺序号以及消息的名称。 消息的名称可以是一个方法,包含一个名字和参数表、可选的返回值 表。消息的各种实现的细节也可以被加入,如同步与异步等。
创建协作图
3. 创建链中创建链的操作 相同,可以按照在对象图中创建链的方式进行创建。 同样我们也可以在链的规范对话框的“General”选项 卡中设置链的名称、关联、角色以及可见性等。 链的可见性是指一个对象是否能够对另一个对象可见 的机制。
创建协作图案例分析
组成协作图的元素
3. 链
在协作图中的链和对象图中链的概念和表示形式都相同,都是两 个或多个对象之间的独立连接,是对象引用元组(有序表),是 关联的实例。 在协作图中,链的表示形式为一个或多个相连的线或弧。在自身 相关联的类中,链是两端指向同一对象的回路,是一条弧。为了 说明对象是如何与另外一个对象进行连接的,我们还可以在链的 两端添加上提供者和客户端的可见性修饰。如下图所示,是链的 普通和自身关联的表示形式。
协作图的概念
2. 使用协作图的作用
协作图作为一种在给定语境中描述协作中各个对象之间的组织交 互关系的空间组织结构图形化方式,在使用其进行建模时,可以 将其作用分为以下三个方面: (1) 通过描绘对象之间消息的传递情况来反映具体的使用语 境的逻辑表达。一个使用情境的逻辑可能是一个用例的一部分, 或是一条控制流。这和序列图的作用类似。 (2) 显示对象及其交互关系的空间组织结构。协作图显示了在 交互过程中各个对象之间的组织交互关系以及对象彼此之间的链 接。与序列图不同,协作图显示的是对象之间的关系,并不侧重 交互的顺序,它没有将时间作为一个单独的维度,而是使用序列 号来确定消息及并发线程的顺序。 (3) 协作图的另外一个作用是表现一个类操作的实现。协作图 可以说明类操作中使用到的参数、局部变量以及返回值等。当使 用协作图表现一个系统行为时,消息编号对应了程序中嵌套调用 结构和信号传递过程。
时序图、活动图、状态图、协作图的区别
时序图、活动图、状态图、协作图的区别时序图时序图用于描述对象之间的传递消息的时间顺序, 即用例中的行为顺序.当执行一个用例时, 时序图中的每条消息对应了一个类操作或者引起转换的触发事件.在 UML 中, 时序图表示为一个二维的关系图, 其中, 纵轴是时间轴, 时间延竖线向下延伸. 横轴代表在协作中各个独立的对象. 当对象存在时, 生命线用一条虚线表示, 消息用从一个对象的生命线到另一个对象的生命线的箭头表示. 箭头以时间的顺序在图中上下排列.ATM 用户成功登陆的时序图时序图中的基本概念对象: 时序图中对象使用矩形表示, 并且对象名称下有下划线. 将对象置于时序图的顶部说明在交互开始时对象就已经存在了. 如果对象的位置不在顶部, 表示对象是在交互的过程中被创建的.生命线: 生命线是一条垂直的虚线. 表示时序图中的对象在一段生命周期内存在. 每个对象底部中心的位置都带有生命线.消息: 两个对象之间的单路通信. 从发送方指向接收方. 在时序图中很少使用返回消息.激活: 时序图可以描述对象的激活和钝化. 激活表示该对象被占用以完成某个任务. 钝化指对象处于空闲状态, 等待消息. 在 UML 中, 对象激活时将对象的生命线拓宽为矩形来表示的. 矩形称为计划条或控制期. 对象就是在激活条的顶部被激活的. 对象在完成自己的工作后被钝化.对象的创建和销毁: 在时序图中, 对象的默认位置是在图的顶部. 这说明对象在交互开始之前就已经存在了. 如果对象是在交互过程中创建的, 那么就应该将对象放到中间部分. 如果要撤销一个对象, 在其生命线终止点处放置 “ X” 符号.练习:孙中山的……活动图在 UML 中, 活动图本质上就是流程图. 它用于描述系统的活动, 判定点和分支等.活动图中的基本概念动作状态: 原子的, 不可中断的动作, 并在此动作完成之后向另一个动作转变. 在 UML 中动作状态用圆角矩形 表示, 动作状态所表示的动作写在圆角矩形内部.分支与合并: 分支在软件系统中很常见. 一般用于表示对象类所具有的条件行为. 用一个布尔型表达式的真假来判定动作的流向. 条件行为用分支和合并表达.在活动图中, 分支用空心小菱形 表示. 分支包括一个入转换和两个带条件的出转换, 出转换的条件应该是互斥的, 须保证只有一条出转换能够被触发. 合并包含两个带条件的入转换和一个出转换.状态图状态图: 通过建立对象的生存周期模型来描述对象随时间变化的动态行为.状态图中的基本概念状态: 用圆角矩形表示. 状态名称表示状态的名字, 通常用字符串表示. 一个状态的名称在状态图所在的上下文中应该是唯一的.转换: 用带箭头的直线表示. 一端连着源状态, 一端连着目标状态.初始状态: 每个状态图都有一个初始状态. 此状态代表状态图的起始位置. 初始状态只能作为转换的源, 不能作为转换的目标, 并且在状态图中只能有一个. 初始状态用一个实心圆表示.终止状态: 模型元素的最后状态, 是一个状态图的终止点. 终止状态在一个状态图中可以有多个.协作图协作图(也叫合作图)是一种交互图.时序图主要侧重于对象间消息传递在时间上的先后关系, 而协作图表达对象间的交互过程及对象间的关联关系。
协作图
11.2.2 链
协作图中链的符号和对象图中链所用的符 号是一样的,即一条连接两个类角色的实 线。 为了说明一个对象如何与另一个对象连接, 可以在链的末路上附上一个路径构造型。
11.2.3 消息
协作图中的消息类型与时序图中的相同, 只不过为了说明交互过程中消息的时间顺 序,需要给消息添加顺序号。 顺序号是消息的一个数字前缀,是一个整 数,由1开始递增,每个消息都必须由唯一 的顺序号。可以通过点表示法代表控制的 嵌套关系。 嵌套可以具有任意深度。与时序图相比, 协作图可以显示更为复杂的分支。
11.3 时序图与协作图的比较
11.3.1 相同点 11.3.2 不同点
11.3.1 相同点
1. 规定责任:两种图都直观地规定了发送 对象和接受对象。 2. 支持消息:两种图都支持所有的消息类 型。 3. 衡量工具:两种图还是衡量耦合性的工 具。
11.3.2 不同点
1. 协作图的优点:协作图的重点是将对象 的交互映射到他们之间的链上,即协作图 以对象图的方式绘制各个参与对象,并且 将消息和链平行放置。 2. 时序图的优点:时序图可以描述对象的 创建和撤销的情况。
协作图示例:
11.2 对象、链和消息
① ② ③
协作图包含了3个元素: 对象(Object) 链(Link) 消息(Message)
11.2.1 对象
协作图与时序图中的对象的概念是一样, 只不过在协作图中,无法表示对象的创建 和撤销,所以对于对象在图中的位置没有 限制。 在UML中用矩形表示。
11.5 协作图建模技术
① ② ③
④
⑤
⑥
11-协作图和时序图
2. 协作图样式和元素
消息
对象
2. 协作图样式和元素 协作图中无法表示对象的创建和撤销,所以对象在图 中的位置没有限制。 ① 主动对象 主动对象是有一方法可以自动启动执行,框加粗。
框加粗
2. 协作图样式和元素 ① 主动对象 主动对象是有一方法可以自动启动执行,框加粗。 ② 多对象 表示同属于一个类的多个对象集合。
零售业务协作图
② 识别参与交互过程的对象; 零售客户、销售员、客户、订单、产品
零售业务协作图
③ 确定对象之间的链,以及链上的消息;
零售客户和销售员 销售员和客户 销售员和订单 销售员和产品 订单和产品 订单和订单
打电话、建立客户、添加个人消息、订购产品、统计金额、产 生订单、产生产品、添加产品、完成订单等。
5b. 该借阅者所借图书数量超过了上限, 则提示, 本次拒借。
实例:图书馆借书处理的顺序图
① 识别交互过程。 读者在借书时,先由管理员把借书证上的读者编号扫
描给系统,系统检查这个读者的借书证合法信息,如果
不合法,则系统给出提示,如果正确系统返回读者的身份 信息,以及读者的借阅信息。 如果读者借书数量没有超过借书的上限,则把要借书 的图书编号输入系统,系统登记借书信息,并返回借书
● 用例:借书 ●参与者:管理员,借阅者 ●基本事件流: 1. 借阅者带着借书证和书来到柜台。 2. 管员输入借阅者的借书证编码。 3. 系统检查借阅者的合法性。 4. 系统显示借阅者的信息。 5. 系统检查借阅者的借阅信息。 6. 管员输入所借图书的条码。 7. 系统显示所借图书的信息,并登记图书。 管员重复6~7步,直到结束。 8. 系统登记借阅者的本次借阅信息,并显示。 ●扩展事件流: 3a. 借阅者身份非法,则提示,本次拒借。 5a. 该借阅者所借图书中有超期的, 则提示, 本次拒借。
协作图
协作图概述
协作图也称为通信图,它描述了系统中, 协作图也称为通信图,它描述了系统中,对象间通过消息 进行的交互,强调了对象在交互行为中承担的角色。 进行的交互,强调了对象在交互行为中承担的角色。 协作图和顺序图之间的语义是等价的, 协作图和顺序图之间的语义是等价的,只是他们的关注点 有所不同而已 使用协作图可以显示对象相互协作时充当的角色。如果需 使用协作图可以显示对象相互协作时充当的角色。 要强调时间和序列,最好选择顺序图建模; 要强调时间和序列,最好选择顺序图建模;如果需要强调 上下文相关,最好选择协作图建模。 上下文相关,最好选择协作图建模。 对象图展示出对象和对象之间的静态关系。 对象图展示出对象和对象之间的静态关系。协作图是对象 图的扩展。协作图除了展示出对象之间的关系, 图的扩展。协作图除了展示出对象之间的关系,还显示出 对象之间的消息传递。 对象之间的消息传递。通常在协作图中省略掉关联的名字 因为表示出关联的名字会使图变得混乱。 ,因为表示出关联的名字会使图变得混乱。
ห้องสมุดไป่ตู้ 汽车和车钥匙的问题域
下面我们绘制一张对象图来对问题域类的实例建模
对类图的实例建模的对象图
上图是协作图的基础, 上图是协作图的基础,我们可以向图中添加消息
对上图中对象间消息建模得到的协作图
与之对应的顺序图
通信图的组成元素
通信图的组成元素包括对象、消息、 连接器 连接器)。 通信图的组成元素包括对象、消息、链(连接器 。消息表 示了对象间的通信,对象通过链连接在一起。 示了对象间的通信,对象通过链连接在一起。 对象:通信图与顺序图中的对象的概念是一样, 对象:通信图与顺序图中的对象的概念是一样,只不过 在通信图中,无法表示对象的创建和撤销, 在通信图中,无法表示对象的创建和撤销,所以对于对 象在图中的位置没有限制。 象在图中的位置没有限制。 链:表示对象之间的语义关系,链是关联的一个实例。 表示对象之间的语义关系,链是关联的一个实例。 通信图中链的符号和对象图中链所用的符号是一样的, 通信图中链的符号和对象图中链所用的符号是一样的, 即一条连接两个对象的实线。 即一条连接两个对象的实线。 消息:通信图中的消息类型与时序图中的相同,只不过 消息:通信图中的消息类型与时序图中的相同, 为了说明交互过程中消息的时间顺序, 为了说明交互过程中消息的时间顺序,需要给消息添加 顺序号。顺序号是在消息的前面加一个整数。 顺序号。顺序号是在消息的前面加一个整数。每个消息 都必须有唯一的顺序号。 都必须有唯一的顺序号。
第7章 协作图
使用Rose创建协作图
3. 创建链
在协作图中创建链的操作与在对象图中创建链的操作相同,可以 按照在对象图中创建链的方式进行创建。同样我们也可以在链的 规范对话框的“General”选项卡中设置链的名称、关联、角色 以及可见性等。 链的可见性是指一个对象是否能够对另一个对象可见的机制。
在项目中创建协作图案例分析
什么是协作图
2. 为什么要使用协作图
协作图作为一种在给定语境中描述协作中各个对象之间的组织交互关系 的空间组织结构图形化方式,在使用其进行建模时,可以将其作用分为 以下三个方面:
通过描绘对象之间消息的传递情况来反映具体的使用语境的逻辑表达。一个 使用情境的逻辑可能是一个用例的一部分,或是一条控制流。这和序列图的 作用类似。
时序图与协作图的互换
①
②
时序图与协作图都表示对象之间的交互 作用,只是它们的侧重点有所不同: 时序图描述了交互过程中的时间顺序, 但没有明确地表达对象之间的关系。 协作图描述了对象之间的关系,但时间 顺序必须从顺序号获得。 两种图的语义是等价的,可以从一种形 式的图转换成另一种形式的图,而不丢 失任何信息。
组成协作图的元素
3. 链
在协作图中的链和对象图中链的概念和表示形式都相同,都是两个或多 个对象之间的独立连接,是对象引用元组(有序表),是关联的实例。
在协作图中,链的表示形式为一个或多个相连的线或弧。在自身相关联 的类中,链是两端指向同一对象的回路,是一条弧。为了说明对象是如 何与另外一个对象进行连接的,我们还可以在链的两端添加上提供者和 客户端的可见性修饰。如下图所示,是链的普通和自身关联的表示形式。
消息
UML协作图
两种图的语义是等价的,可以从一种形式的图转换 成另一种形式的图,而不丢失任何信息。
9
比较顺序图与协作图 例:客户Joe从ATM机提取20美金的场景。
10
11
实例——储户在ATM机上存钱操作的协作图 ( visio 2007演示 )
1、确定系统中的类
7: 验 证 PIN 15:打印收条
12:接收钱
2:读卡
13:验钱数 14:帐户加钱
: 读卡机
4: 打 开 帐 户 16:退卡
: 帐户
14
2
协作图示例:
3
协作图包含了3个元素:
① 对象(Object) ② 链(Link) ③ 消息(Message)
4
1. 对象
在协作图中可以使用3种标记类型的对象。
5
2. 链
协作图中链的符号和对象图中链所用的符号是 一样的,即一条连接两个类角色的实线表示。
链接用来在协作图中关联对象,链接的目的是 让消息在不同系统对象之间传递。没有链接, 两个系统对象之间无法彼此交互。
储户
读卡机
ATM屏幕
帐户
存钱机
12
2、确定类之间关系
储户
ATM屏幕
存钱机
读卡机
帐户
13
3、对象实例之间协作关系
: 储户
6:输入PIN 9: 选 择 存 钱 事 务
11: 输 入 金 额
: ATM屏幕
5: 提 示 输 入 PIN 8:提示选择事务
10:提示金额
: 存钱机
1:插 入 卡
3: 屏 幕 初 始 化
6
7
3.消息
消息是协作图中对象与对象之间通信的方式。消息在协 作图中显示为一个伴随链接或者关联角色的文本字符串,并 带有一个箭头来指示消息沿着关系传递的方向。
顺序图和协作图
问题: 阻止消息和超时消息属于同步消息还是异步消息?
6.2.6 消息
• 格式
– [前缀][守卫条件][顺序表达式][返回值:=]消息名([参数列表])
• 例:
– – – – – – 2: display () 1.3.1: p:=find() [x<0] 4: invert(x, color) 3.1 *[x = 1..10] : update() a3,b4/c2: copy(a,b) 1.1a, 1.1b/1.2: continue()
6.2.2 参与者或对象
• 参与者和对象按照从左到右的顺序排列 • 一般最多两个参与者,他们分列两端。启动这个用例的活 动者往往排在最左边;接收消息的活动者则排在最右端; • 对象从左到右按照重要性排列或按照消息先后顺序排列。
6.2.2 参与者或对象
• 对象的命名方式有三种:
– 包括对象名和类名 – 类名(匿名对象) – 对象名(不关心类)
• 间隔区中,有操作符(描述帧中的图的类型的表 达式)和图所描绘的交互的名字。
• •
最外层是框架元件或叫间隔区: 对于顺序图,操作符是 sd (sequence diagram), BuySoda是图的名字
• 帧化的概念很有用,有多种应用方法,不同的应 用帧化类型(间隔区操作符)对应不同。
交互片段(interaction fragment)
6.2.1 顺序图的组成
• 参与者(actor)或者 对象(object)
• 生命线(lifeline)
• ----坐标轴纵向的虚线表示对象在序列中的执 行情况(即发送和接收的消息,对象的活动) 这条虚线称为对象的“生命线”。
• 激活期/ 控制焦点
• 消息(message)
协作图Collaboration
• 首先,不要对系统中的每个类都画状态 图。尽管这样做很完美,但太浪费精力, 其实使用者可能只关心某些类的行为。 正确的做法是:为帮助理解类而画它的 状态图。状态图描述跨越多个用例的单 个对象的行为,而不适合描述多个对象 间的行为合作。为此,常将状态图与其 它技术(如顺序图、协作图和活动图) 组合使用。
• 活动
活动用于描述一个工作步骤。一项操作可以 描述为一系列相关的活动。活动仅有一个起始点, 但可以有多个结束点。
一个活动可以顺序地跟在另一个活动之后, 这是简单的顺序关系。
• 判定
如果在活动图中使用一个菱形的判断标志, 则可以表达条件关系,判断标志可以有多个输入 和输出转移,但在活动的运作中仅触发其中的一 个输出转移。
• 消息
协作图中的消息也包括同步消息与异 步消息,它们的表示方法与顺序图中的相 同。不过,在协作图有一个对象可能会向 同一个类的多个对象同时发送同一个消息, 则要用一叠向后延伸的对象图标表示多个 对象。在多对象前面可加上方括号括起来 的条件,前面加一个星号,用来说明消息 发送给多个对象。
关联
表示的对象与对象之间的静态关系, 用描述的听力训练,一边阅读材料, 一边听音频资料。
• 图6-43中有“teachers”和“student”两个泳道,表示 学生参加考试时,进入考场以后,老师检查学生证件后发 放试卷,同时学生对号入座,最后开始答题。
• 四种图的运用
上面对UML中用于描述系统动态行为的 四个图(状态图、顺序图、协作图和活动图)做 了简单地介绍。这四个图均可用于系统的动态 建模,但它们各自的侧重点不同,分别用于不 同的目的。下面对如何正确使用这几个图做一 简单的总结,在实际的建模过程中要根据具体 情况灵活运用这些建议。
第11章协作图-郭
: Reservation
: Loan
3. 图书管理员处理还书的协作图
1: find borrower( ) : Return Window : Librarian
3: return_back( ) : Title
5: return_back( )
2: find(String)
4: update( )
并发消息
两个相同对象之间存在多个消息,并且这些消 息可以是同时调用,即并发消息。 为了表示并发消息,可以用数字加字母的表示 法。
并发消息举例
一个程序项目包含资源文件和源文件,当打开 该项目时,开发工具将同时打开所属的资源文 件和源文件。
条件消息:当判断语句为真时,才调 用相关的消息。
一个teacher对象 向每一个student 对象发送一个 Message消息
一个teacher对象 向一个student对 象发送n次 Message消息
用Rose将顺序图自动转换成协作图
主动对象(活动对象)
不需要接收消息就可自动启动交互的对象。(拥 有控制线程的对象) 主动对象是一组属性和方法的封装体,其中至少 有一个方法不需要接收消息就能主动执行。 主动对象在UML和Rose中的表示方法不同。
汽车租赁系统中客户取车的协作图
11.2 对象、链和消息
① ② ③
协作图包含了3个元素: 对象(Object) 链(Link) 消息(Message)
11.2.1 对象
协作图与时序图中的对象的概念是一样,只不 过在协作图中,无法根据位置来表示对象的创 建和撤销,所以对于对象在图中的位置没有限 制。 创建对象? 通过把《create》放到消息标签中来表示对 创建对象。
第6章 顺序图和协作图
6.2 顺序图元素
寻获消息(found message):缺少了发送事件, 只有接收事件的消息称为寻获消息。对于寻获消 息,在表示时需要在消息的非箭头端加上一个实 心的小圆。 未知消息( unknown message ):既没有发送事 件,也没有接收事件的消息称为未知消息。对于 未知消息,UML中也没有详细说明这种消息,也 许这个消息在实际应用时并不真实存在。
最常见的实现异步消息的方式是使用线程。当系 统发送异步消息时,需要启动一个线程在后台运 行。异步调用的图符如下图所示。 异步信号(asynchSignal):同步信号消息和异 步信号消息的区别在于,消息发送对象是否等待 目标执行结束才继续往下执行。异步信号消息类 似于最常用的简单消息,一般情况下,如果不必 强调消息的性质,则可以使用异步信号消息代表 其他性质的消息。它的图符如下图所示。
6.2 顺序图元素
激活在顺序图中不能够单独存在必须与生命线连 在一起使用,当一条消息被传递给对象的时候, 该消息将触发该对象的某个行为,此时该对象就 被激活了。 通常情况下,表示激活的矩形的顶点是消息和生 命线交汇的地方,表示对象从此时起开始获得控 制权,而矩形的底部则表示该次交互已经结束, 或对象的已经交控制权交出。
简单消息在发送线程c的第2 个消息之前,必须 带返回值的嵌套消息 先发送线程a的第3 个消息和线程 b的第 条件消息 在发送消息 1.2之前 4个消息 必须已经同时发送 循环消息 并发消息给线程a和 线程同步 b 带前缀消息
第6章 前缀(predecessor)
顺序图元素
•语法:消息序列号,消息序列号, ... / •前缀是一个用来同步线程或路径(path)的表达式 •意思是在发送当前消息之前指定序列号的消息被 处理(必须连续执行) •消息序列号之间用逗号隔开,用斜杠结束 •例如 1.1a, 1.1b/1.2: continue() ,在发送消 息1.2之前必须已经同时发送并发消息给线程a和b
UML顺序图和协作图
对上述步骤建模的顺序图如下:
: Customer
: Front
: Register
: Dispenser
1: accept(cash,selection) 2: getCustomerInput(cash,selection)
3: check(selection) 4: yes
5: updateReserve(cash,price)
:ClassA
:ClassB
oper()
返回消息
返回消息表示从过程调用 返回,以虚线箭头表示。
:ClassA
:ClassB
oper()
阻止消息
阻止消息是指消息发送者发出消息给接收者, 若接收者无法立即接收消息,则发送者放弃此 消息。Rose中用折回的箭头表示阻止消息。
:ClassA
:ClassB
场景描述
曹操 :刘备
:孔明
求战 请拟策略
:关羽
:张飞 孙权
请防守荆州
协作图及其应用
协作图旳作用
协作图常用来描述业务或软件系统中,每个对象在交 互发生时承担旳角色,即强调了交互发生时,每个对 象承担旳职责。
使用协作图能够显示对象相互协作时充当旳角色。假 如需要强调时间和序列,最佳选择顺序图建模;假如 需要强调上下文有关,最佳选择协作图建模。
协作图用于显示对象之间怎样进行交互,以实现特定 用例或用例中特定部分旳行为。设计员使用协作图和 顺序图拟定并阐明对象旳角色,这些对象执行用例旳 特定事件流。这些图提供旳信息主要用来拟定类旳职 责和接口。
)] 8
[until(体现式)] 迭代到体现式为true时,才
(2). 监护条件 监护条件一般是用来表达分支旳,也就是表达“假如条件为true,才
发送消息”旳语义,在UML中,监护条件是以“【条件体现式】”旳 格式表达旳。 目前来看一下它在交互图中旳应用。 例如,在图中,消息“1.3:create(prddleryid)”旳前面就添加 了一种监护条件【peddeleryid not exist】,它阐明只有当 peddeleryid不存在时才调用create措施来创建新旳送货单。假如已 经存在,那就不必创建,直接调用1.4措施,将订单项中旳产品添加 到相应旳送货单即可。
[s&c] 1.3: register(s)
[s&c]1:OK
1.1.1: s=find(name)
:StudentList
<<local>> c:Course
•图7-20 注册课程
10பைடு நூலகம்
监护体现 语义解释 式与消息
[s&c]1.3register(s) 当s和c都不是空对象时,才执 行register措施
1.1: findStudent(name) 1.2: findCourse(course)
四种图
四种图(状态图、序列图、合作图和活动图)的运用状态图:State diagram活动图:Activity diagram以上二者属于行为图/动态图dynamic diagram序列图:Sequence diagram协作图(合作图):Collaboration diagram以上二者属于交互图interaction diagram这四个图均可用于系统的动态建模,但它们各自的侧重点不同,分别用于不同的目的。
首先,不要对系统中的每个类都画状态图。
尽管这样做很完美,但太浪费精力,其实你可能只关心某些类的行为。
正确的做法是:为帮助理解类而画它的状态图。
状态图描述跨越多个用例的单个对象的行为,而不适合描述多个对象间的行为合作。
为此,常将状态图与其它技术(如序列图、合作图和活动图)组合使用。
序列图和合作图适合描述单个用例中几个对象的行为。
其中序列图突出对象间交互的顺序,而合作图的布局方法能更清楚地表示出对象之间静态的连接关系。
当行为较为简单时,序列图和合作图是最好的选择。
但当行为比变复杂时,这两个图将失去其清晰度。
因此,如果想显示跨越多用例或多线程的复杂行为,可考虑使用活动图。
另外,顺序图和合作图仅适合描述对象之间的合作关系,而不适合对行为进行精确定义,如果想描述跨越多个用例的单个对象的行为,应当使用状态图。
---------------------------------------------------------------------------------------------------------------------------------UML提供图来描述系统的结构和行为。
在其中,类图用于描述系统的静态结构,状态图,协作图,活动图,序列图则用于描述系统的动态行为,描述系统在执行期间不同时间点是如何动态交互的。
在这四种图中可以大体分为两类:以描述系统状态转移为主的状态图和活动图,以描述系统系统对象通讯和交互为主的协作图和序列图。
交互视图—协作图
/Debtor:Account
2.2.2 类元角色说明
类元角色以斜杠开始,然后是角色名,
然后是冒号,最后是基类 角色的名字下面不加下划线,表示类元 角色不是实例,而是更一般的概念 在交互图中,充当特定角色的对象必须 是该角色的基类的实例,说明类元角色 的特性的唯一方法是命名一个基类 UML中,并不总是清楚地区分对象和类 元角色
但是侧重点不一样:顺序图强调的是交 互的时间顺序,协作图强调的是交互的 语境与参与交互的对象的整体组织
3.1 协作图与顺序图的关系示例
1
:Order
*
:OrderLine
quantity: Integer cost: Float * 1
CatalogueEntry
库存控制系统中的订单类图
3.1 协作图与顺序图的关系示例
2.5.1 多对象的表示
多对象采用下面的方式表达
*[all] 1:交作业()
:老师
:学生
*1: line:=findLine(n)
:Order
:OrderLine
{new}
《Local》
Line:OrderLine
查找指定的订单行
2.6 返回结果(Return results)
消息可能是要求某个对象进行计算并返
1: add (n, c)
1.1: OrderLine (n, c)
: Order
: OrderLine
{new}
网上定购系统的协作图
3.2 协作图的序号编制
1 1.1 1.2
2
2.1 2.1.1 2.1.2 2.2
2.2.1
消息的层次编号方式
4 协作图建模技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
辽宁工程技术大学上机实验报告
实验五UML协作图建模
一、实验目的
通过对仓库历史信息查询的事件流分析,考察系统交互中各个对象以及对象之间的消息传递,并创建链作为消息通信的路径,最后使用协作图构建动态模型。
二、实验工具
工具:面向对象可视化建模工具Rational Rose 2003。
三、实验性质
本实验为设计性实验。
四、实验内容
协作图强调发送和接受消息的对象之间的结构组织的交互图,显示对象、对象之间的链接以及对象之间的消息,还可以显示当前模型中的简单类实例和类实体实例。
参照第五部分中的实验步骤,做出如下协作图:
1.图书管理系统中,还书用例对应的协作图
2.根据下面描述,绘制一张仓库管理员进行仓库历史信息查询的时序图。
仓库管理员在查询历史信息时,只和历史信息查询模块交互,首先他为查询历史信息模块输入查询条件,然后历史信息查询模块分别将查询条件输入给商品进货退货模块、商品调拨模块、商品盘店模块。
3个模块查询完毕之后分别将各自信息的查询结果返回给历史信息查询模块,最后由历史信息查询模块将查询结果返回给管理员。
五、实验步骤
1、ROSE绘图步骤
(1)协作图的创建和删除
右键单击浏览器中的“Logical View”选择“Collaboration Diagram”,双击图标,出现图1,为编辑协作图做好准备。
2)删除一个协作图的步骤如下:
●右键单击浏览器中的协作框图名;
●在快捷菜单中选择“Delete”。
(2)协作图包含的元素
对象
对象规范:
1)映射类(Class)
⏹在Class下拉列表框中选择类名;或者,
⏹将浏览器中的类拖动到框图中的对象上。
2)对象持续性(Persistence)
⏹Persistent:对象保存到数据库或者其他形式的永久存储体中
⏹Static:对象保存在内存中直到程序中止
⏹Transient:对象只在短时间内保存在内存中
3)多实例(Multiple instances)
⏹选中该复选框之后,协作图中的对象图标将显示为多实例图
标。
链
要在协作图中增加消息,必须先建立对象之间的链接。
链接一般建立在两个对象或者两个类实例之间,也可以建立反身链接。
链的操作
1)创建链接:
•单击工具箱中的按钮;
•从一个对象拖动到另一个对象,创建链接。
2)创建反身链接
单击工具箱中的按钮;
单击发送消息的对象,建立反身链接。
消息
1)将消息加进协作图
⏹单击工具箱中的按钮;
⏹单击框图中对象间的链接;
⏹输入消息名。
2)删除消息
⏹选择要删除的消息;
⏹选择Eddit > Delete from Model或按Ctrl+D。
⏹注意:在协作图中消息删除后,链接仍然存在于模型中
3)打开或关闭消息编号:
2.UML中协作图创建步骤
1、设置交互的语境。
这些语境可以是系统、类、用例和协作的一个脚本。
2、通过识别对象在交互中扮演的角色,开始绘制协作图,把对象作为顶点放在图中。
3、在识别了协作图的对象之后,为每个对象设置初始值。
4、根据对象间的关系开始确定对象的连接。
5、从引起消息的顺序开始,按消息的顺序,把消息附加到链上。
消息的顺序按标号大小表达。
6、给某个控制流的每个消息附上前置或后置条件,这里可以更详细的说明控制流。
六交互图之间的转换——F5键
七、实验结果
1. 图书管理系统协作图
图1 实验一协作图按F5转换为时序图:
图2实验一时序图
2.仓库历史信息查询协作图
图3 实验二协作图按F5转换为时序图:
图4 实验二时序图。