收藏 分享(赏)

第04章 顺序图和协作图.ppt

上传人:hwpkd79526 文档编号:10068429 上传时间:2019-10-04 格式:PPT 页数:67 大小:1.47MB
下载 相关 举报
第04章 顺序图和协作图.ppt_第1页
第1页 / 共67页
第04章 顺序图和协作图.ppt_第2页
第2页 / 共67页
第04章 顺序图和协作图.ppt_第3页
第3页 / 共67页
第04章 顺序图和协作图.ppt_第4页
第4页 / 共67页
第04章 顺序图和协作图.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、第4章 顺序图和协作图,面向对象分析与设计 & UML,2,4.1 交互图概述,在标识出系统的类图之后,仅给出了实现用例的组成结构,这时还需要描述这些类的对象是如何交互来实现用例功能的。即不但需要把用例图模型转化为类图模型,还要将它转化为交互图模型。交互图(interaction diagram)是用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档.,交互图通常用于描述一个用例的行为, 显示该用例中所涉及的对象及对象之间消息传递情况.,交互图包括: 顺序图(sequence diagram), 描述对象按照时间顺序的消息交换; 协作图(collaboration

2、 diagram), 描述系统成分如何协同工作.,面向对象分析与设计 & UML,3,4.2 顺序图,Rumbaugh的定义: 顺序图是显示对象之间交互的图, 这些对象是按时间顺序排列的. 它显示参与交互的对象及对象之间消息交互的顺序.它体现出系统用例的行为。,顺序图有四个主要的标记符:活动对象生命线控制焦点消息,面向对象分析与设计 & UML,4,4.2 顺序图,活动对象活动对象可以是系统的参与者或者任何有效的系统对象。对象是类的实例,它使用包围名称的矩形框来标记。名称带下划线,顺序图中对象的标记符如下图所示。,面向对象分析与设计 & UML,5,4.2 顺序图,对象的三种命名方式:,生命线

3、是对象图标向下延伸的虚线, 表示对象生存时间.,消亡点,面向对象分析与设计 & UML,6,4.2 顺序图,生命线顺序图中垂直方向代表时间维,时间流逝的方向为自顶向下。靠近顶部的消息发生的时间要比靠近底部的消息早。因此,顺序图是两维的。自左至右的维数代表对象的布局,自顶向下的维数代表时间的流逝。每个对象的生命线都是一条从对象向下的虚线。表示对象的存在时间。,面向对象分析与设计 & UML,7,4.2 顺序图,控制焦点(Focus of Control)又称为激活期(Activation), 用生命线上的小矩形表示, 在这个时间段内, 对象执行相应的操作.,面向对象分析与设计 & UML,8,4

4、.3 顺序图中的消息,消息消息用来说明顺序图中不同活动对象之间的通信。它可在一个对象需要取消不同对象的进程时或者需要向另一个对象提供服务时,使用消息。消息从活动对象生命线到接收对象生命线的箭头表示。箭头上面标记要发送的消息,如下图所示。,面向对象分析与设计 & UML,9,4.3 顺序图中的消息,消息的限定消息可以包含条件以便限制它们只在满足条件时才能发送。条件显示在消息名称上面的方括号中。右图示例演示了如何建立一个顺序图来显示登录尝试。如果登录失败,会在放弃登录之前重试一次,如下图所示。,面向对象分析与设计 & UML,10,4.3 顺序图中的消息,UML1.4后定义的消息有: 调用消息 p

5、rocedure call 异步消息 asynchronous 返回消息 return UML1.3前的消息还有: 简单消息 simple Rose扩充的消息 阻止消息 balking 超时消息 time-out,面向对象分析与设计 & UML,11,4.3 顺序图中的消息,调用消息:消息的发送者把控制传递给消息的接收者, 等待接收者返回或放弃控制.,调用消息必有一个与之配对的返回消息, 但是可以不用画出.,面向对象分析与设计 & UML,12,4.3 顺序图中的消息,面向对象分析与设计 & UML,13,4.3 顺序图中的消息,异步消息:消息的发送者把控制传递给消息的接收者, 然后继续自己的

6、工作,不等待接收者返回或放弃控制.,UML1.4及以后,UML1.3及以前,面向对象分析与设计 & UML,14,4.3 顺序图中的消息,下面示例演示了如何在登录文件的情况下使用异步消息。,面向对象分析与设计 & UML,15,4.3 顺序图中的消息,简单消息:如果所有的消息都是同步或者异步消息,那么为什么还要简单消息呢?因为有时候我们不关心消息是同步还是异步,此外在高层分析中,有时候没有必要指定一个消息是同步的还是异步的。如下面的示例所示。,面向对象分析与设计 & UML,16,4.3 顺序图中的消息,面向对象分析与设计 & UML,17,4.3 顺序图中的消息,返回消息:表示从过程调用返回

7、. 如果是过程消息返回, 则不用画出; 如果是非过程消息, 则必须画出.,面向对象分析与设计 & UML,18,4.3 顺序图中的消息,阻止消息:消息的发送者传递消息给接收者, 如果接收者无法立即接收, 则发送者放弃该消息. 超时消息:消息的发送者发出消息给接收者并按指定时间等待, 若接收者无法在指定时间内接收, 则发送者放弃该消息.,面向对象分析与设计 & UML,19,4.3 顺序图中的消息,消息的语法格式,前置消息列表警戒条件消息顺序号返回值:=消息名称(参数列表),例子:,面向对象分析与设计 & UML,20,4.3 顺序图中的消息,顺序图的其它技术,1.创建对象创建对象的标记符如下图

8、中的示例所示。有一个主要步骤用来把“create” 消息发送给对象实例。对象创建之后就会具有生命线,就像顺序图中的任何其他对象一样。现在可以像顺序图中的其他对象那样来使用该对象发送和接收消息。在处理新创建的对象,或者处理顺序图中的任何其他对象时,都可以发送“destroys”消息来删除对象。 若要想说明某个对象被销毁,需要在被销毁对象的生命线上放一个X字符。,面向对象分析与设计 & UML,21,4.3 顺序图中的消息,顺序图的其它技术,创建对象,面向对象分析与设计 & UML,22,4.3 顺序图中的消息,顺序图的其它技术,面向对象分析与设计 & UML,23,4.3 顺序图中的消息,2.分

9、支和从属流有两种方式来修改顺序图的控制流:使用分支和使用从属流。这两种方式很相似,各自的标记符略微不同。控制流的改变是由于不同的条件导致控制流走向不同的道路。,面向对象分析与设计 & UML,24,4.3 顺序图中的消息,分支允许控制流走向不同的对象,如下图所示。,面向对象分析与设计 & UML,25,4.3 顺序图中的消息,注意消息的开始位置是相同的,分支消息的结束“高度”也是相等的。这说明在下一步中,其中之一将会执行,如下图所示。,面向对象分析与设计 & UML,26,4.3 顺序图中的消息,从属流还允许控制流根据条件改变,但是只允许控制流改变为相同对象的另一条生命线分支,如下图所示。,面

10、向对象分析与设计 & UML,27,4.3 顺序图中的消息,在下面的示例中,Editor在用户删除文件或者保存文件时向Filesystem发送一条消息。显然,Filesystem将会执行两种完全不同的活动,并且每一个工作流都需要独立的生命线,如下图 所示。,面向对象分析与设计 & UML,28,4.3 顺序图中的消息,练习:阅读一个顺序图阅读下图所示的顺序图,该图说明了开发者编译应用程序的步骤。在阅读顺序图时,请指出我们到目前为止已经学习过的标记符组件。 练习步骤1)指出顺序图中的参与者和对象。2)指出出错处理发生的位置。3)按照控制流的顺序指出各个消息。,面向对象分析与设计 & UML,29

11、,4.3 顺序图中的消息,面向对象分析与设计 & UML,30,4.4 建立顺序图的步骤,创建顺序图包含4项任务:1)确定需要建模的工作流。2)从左到右布置对象。3)添加消息和条件以便创建每一个工作流。4)绘制总图以便连接各个分图。,面向对象分析与设计 & UML,31,4.4 建立顺序图的步骤,确定交互过程的上下文 识别参与交互过程的对象 为每个对象设置生命线 从引发这个交互过程的初始消息开始, 在生命线之间自顶向下依次画出随后的各个消息. 如果需要嵌套或(和)表示消息发生的时间点, 使用FOC. 如果需要说明时间约束, 则在消息旁边加上约束说明. 如果需要, 可以为每个消息设置前置条件和后

12、置条件.,面向对象分析与设计 & UML,32,4.4 建立顺序图的步骤,1)确定工作流建模顺序图的第一步是确定将要建模的工作流。对于这个练习,我们将要建模Grading system的View Grades用例。为此,需要至少标识出3个要建模的工作流:教师成功地检查学生分数教师试图检查某个学生分数,但该学生在系统中不存在。 教师试图检查某个学生分数,但该学生分数在系统中不存在。,面向对象分析与设计 & UML,33,4.4 建立顺序图的步骤,2)布置对象建模顺序图的下一步是从左到右布置所有的参与者和对象,包含要添加消息的对象生命线,如下图所示。,面向对象分析与设计 & UML,34,4.4

13、建立顺序图的步骤,3)添加消息和条件接下来,对每一个工作流作为独立的顺序图建模。从基本的工作流开始,它是没有出错条件,并且需要最少决策的工作流。 注意选择适当的消息类型(异步、同步、简单和返回)。在本例中,基本工作流是教师成功地检查某个学生的分数,如下图所示。,第1个工作流,面向对象分析与设计 & UML,35,4.4 建立顺序图的步骤,面向对象分析与设计 & UML,36,4.4 建立顺序图的步骤,接下来以独立的顺序图建模从属工作流。此处只建模否定的条件,如下图所示。,第2个工作流,面向对象分析与设计 & UML,37,4.4 建立顺序图的步骤,注意使用条件来指示在什么时候发送什么消息,如下

14、图所示。,第3个工作流,面向对象分析与设计 & UML,38,4.4 建立顺序图的步骤,4)绘制总图建模顺序图的最后一步是把所有独立的工作流连接为一个总图,如下图所示。 在此阶段,如果觉得前面的消息和交互对于当前的顺序图过于详细,可以让它们更加泛化一些,但是在软件建模的下一个阶段,就会觉得初始的各个顺序图越详细越好。,面向对象分析与设计 & UML,39,4.4 建立顺序图的步骤,面向对象分析与设计 & UML,40,4.5 协作图,协作图是用于描述系统的行为是如何由系统成分协作实现的图.,对象object,链 link,消息 message,协作图中的元素:,面向对象分析与设计 & UML,

15、41,4.5 协作图,多对象在协作图中,多对象指的是由多个对象组成的对象集合,一般这些对象是属于同一类的。当需要把消息同时发送给多个对象而不是单个对象时,就要用多对象这个概念。多对象用多个方框的重叠表示。,1.对象对象这个概念前面已经多次提到,这里主要强调多对象和主动对象。,面向对象分析与设计 & UML,42,4.5 协作图,多对象的例子一个对象可能会向同一类的多个对象同时发送一个消息,例如,老师会让多个学生同时交作业。在多对象前面可以加上用方括号括起来的条件,前面加一个星号,用来说明消息发送给多个对象,如下图所示。,面向对象分析与设计 & UML,43,4.5 协作图,主动对象主动对象是一

16、组属性和一组方法的封装体,其中至少有一个方法不需要接受消息就能主动执行(称做主动方法)。也就是说,主动对象可以在不接受外部消息的情况下自己开始一个控制流。在协作图中,主动对象的表示法除了矩形框边界要加黑加重外,其他方面与一般对象的表示法相同。,面向对象分析与设计 & UML,44,4.5 协作图,2.链,链用来在协作图中关联对象。它们代表一个来自类图的关联的实例。在协作图中,消息显示在链的旁边,一个链上可以有多个消息。在链上可以加一些修饰,如角色名、导航(表示链是双向还是单向)、链两端的对象是否有聚集关系等,但由于链是连接对象的,所以链的两端没有多重性标记。,面向对象分析与设计 & UML,4

17、5,4.5 协作图,3.消息,消息是协作图中对象与对象之间通信的方式。消息在协作图中显示为一个伴随链接或者关联角色的文本字符串,并带有一个箭头来指示消息沿着关系传递的方向,如下图所示。,面向对象分析与设计 & UML,46,4.5 协作图,消息的返回结果消息可能是要求某个对象进行计算并返回结果的值. UML提供了返回值的表示法。返回值的名字在最左,后跟赋值号“:”,接着是操作名和操作的参数。对计算商品价格这个例子,可以表示成:totalPrice:compute(itemPrice,salesTax),返回值,面向对象分析与设计 & UML,47,4.6 建立协作图的步骤,协作图的建模有3个基

18、本的步骤:1)确定属于协作图的元素。2)建模这些元素之间的结构关系。3)建模实例层的协作图。建模分数记录系统的协作图。具体用例是Teacher使用 Website登录并且查看学生的分数。,面向对象分析与设计 & UML,48,4.6 建立协作图的步骤,确定交互过程的上下文 识别参与交互过程的对象 如果需要, 为每个对象设置初始特性 确定对象之间的链, 及沿着链的消息 从引发该交互过程的初始消息开始, 将每个消息附到相应的链上 如果需要表示消息嵌套, 则有Dewey十进制表示. 如果需要说明时间约束, 则在消息旁边加上约束说明 如果需要, 可以为每个消息设置前置条件和后置条件,面向对象分析与设计

19、 & UML,49,4.6 建立协作图的步骤,1.确定协作图的元素首先,确定协作图中将会包含的元素或者类。从已经描述的用例中可以确定需要Teacher、Student和Grade类,其他类是否需要不太清楚。对于分数记录系统,我们需要一个Website类来提供进行交互的场所。还需要一个Database 类来提供为学生检索信息的功能。最后,还需要一个Security类提供让Teacher登录系统的手段,如下图所示。,面向对象分析与设计 & UML,50,4.6 建立协作图的步骤,分数记录系统中的类,Teacher 类如何与Student类交互?Student类从哪里获取其数据?Teacher类如何

20、登录系统?通过这些问题和其他问题,我们就会认识到需要更多的类才能完成目标。,:Teacher,:Student,:Grade,:Security,:Database,:Website,面向对象分析与设计 & UML,51,4.6 建立协作图的步骤,2建模类之间关系下一步就是确定这些类之间的关系。在这一步中,着手建模早期阶段的协作图,在类角色之间添加链接和关联角色,如下图所示。,面向对象分析与设计 & UML,52,4.6 建立协作图的步骤,面向对象分析与设计 & UML,53,4.6 建立协作图的步骤,3.建模实例层协作图最后一步就是在实例层建模协作图。这意味着需要把类角色修改为对象实例,并且

21、指定执行用例的消息序列。这一步需要用到描述对象之间链接的消息标记符,包括控制点、迭代、创建实例,以及特定消息类型的规范。,面向对象分析与设计 & UML,54,4.6 建立协作图的步骤,面向对象分析与设计 & UML,55,4.7 顺序图与协作图的比较,相同点 规定责任, 二者均直观地规定了发送对象和接收对象的责任. 支持消息, 二者均支持所有的消息类型. 衡量工具, 二者均是衡量耦合性的工具. 不同点 协作图强调参与交互的对象的组织结构; 顺序图强调消息的时间顺序. 顺序图可以反映对象的创建/激活/撤消; 协作图不能. 协作图能反应动作路径, 消息必须有顺序号; 顺序图没有.,面向对象分析与

22、设计 & UML,56,4.7 顺序图与协作图的比较,汽车租赁系统中”客户还车”的顺序图,面向对象分析与设计 & UML,57,4.7 顺序图与协作图的比较,汽车租赁系统中”客户还车”的协作图,面向对象分析与设计 & UML,58,4.8 工具支持(略),面向对象分析与设计 & UML,59,4.9 常见问题分析,(1) 如何在顺序图中表示消息的循环发送?,在消息名前加循环条件,例如:1.1 *for all order lines: message1()2.1 *i:= 1n: message2(),面向对象分析与设计 & UML,60,4.9 常见问题分析,(2) 如何在顺序图中表示消息的

23、条件发送?, 在消息上加警戒条件, 如: x0 4: invert(x, color), 在消息名字前加条件子句, 如: 3.1 xy message(), 使用文字说明, 分成多个顺序图,面向对象分析与设计 & UML,61,4.9 常见问题分析,(3) 如何在顺序图表示时间约束?,可以使用UML的3种扩展机制之一约束(constraint)来表示,如:,面向对象分析与设计 & UML,62,4.9 常见问题分析,(4) 如何在顺序图中表示递归?,直接递归,间接递归,面向对象分析与设计 & UML,63,4.9 常见问题分析,(5) 顺序图中对象如何确定? 顺序图与类图是否同时生成并交互修改

24、?,顺序图中的对象的确定需要参考类图, 类图中的类的确定也需要参考顺序图, 二者相互补充、相互协调的关系.在分析阶段, 顺序图中的消息名可能只是一个说明, 而在设计阶段, 顺序图的消息名被细化, 最后对应到类图中的方法.,面向对象分析与设计 & UML,64,4.9 常见问题分析,(6) 如果对象具有多态性, 发送对象不可能事先知道目标对象所属的类, 则在交互图中如何确定目标对象所属的类?,目标对象应是形成多态的继承关系中的祖先类.,(7) 如何在交互图中表示广播消息?,(8) 如何在协作图中表示创建对象?,面向对象分析与设计 & UML,65,4.8 实例分析:语音邮箱系统,创建“保留语音信息”的顺序图,用例2: 保留语音信息 1. 呼叫者”拨打邮箱号”. 2. 呼叫者说出信息. 3. 呼叫者挂断电话. 4. 语音邮件系统将记录的信息存放在接收者的邮箱中.,用例1: 拨打邮箱号 1. 呼叫者拨打语音邮件系统的主号码. 2. 语音邮件系统发出提示音:输入邮箱号码并加#号. 3. 呼叫者输入接收者的邮箱号. 4. 语音邮件系统发出问候语:已进入XX的邮箱,请留言.,面向对象分析与设计 & UML,66,4.8 实例分析:语音邮箱系统,面向对象分析与设计 & UML,67,作业,完成”笔记本电脑维修管理系统”的顺序图分析.,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报