第04章 顺序图和协作图_第1页
第04章 顺序图和协作图_第2页
第04章 顺序图和协作图_第3页
第04章 顺序图和协作图_第4页
第04章 顺序图和协作图_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章顺序图和协作图4.1交互图概述

在标识出系统的类图之后,仅给出了实现用例的组成结构,这时还需要描述这些类的对象是如何交互来实现用例功能的。即不但需要把用例图模型转化为类图模型,还要将它转化为交互图模型。交互图(interactiondiagram)是用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档.交互图通常用于描述一个用例的行为,显示该用例中所涉及的对象及对象之间消息传递情况.交互图包括:顺序图(sequencediagram),描述对象按照时间顺序的消息交换;协作图(collaborationdiagram),描述系统成分如何协同工作.2面向对象分析与设计&UML4.2顺序图Rumbaugh的定义:顺序图是显示对象之间交互的图,这些对象是按时间顺序排列的.它显示参与交互的对象及对象之间消息交互的顺序.它体现出系统用例的行为。时间维对象维对象/参与者生命线控制焦点消息顺序图有四个主要的标记符:活动对象生命线控制焦点消息3面向对象分析与设计&UML4.2顺序图活动对象

活动对象可以是系统的参与者或者任何有效的系统对象。对象是类的实例,它使用包围名称的矩形框来标记。名称带下划线,顺序图中对象的标记符如下图所示。

4面向对象分析与设计&UML4.2顺序图对象的三种命名方式:生命线是对象图标向下延伸的虚线,表示对象生存时间.消亡点5面向对象分析与设计&UML4.2顺序图生命线顺序图中垂直方向代表时间维,时间流逝的方向为自顶向下。靠近顶部的消息发生的时间要比靠近底部的消息早。

因此,顺序图是两维的。自左至右的维数代表对象的布局,自顶向下的维数代表时间的流逝。每个对象的生命线都是一条从对象向下的虚线。表示对象的存在时间。6面向对象分析与设计&UML4.2顺序图控制焦点(FocusofControl)又称为激活期(Activation),用生命线上的小矩形表示,在这个时间段内,对象执行相应的操作.FOC嵌套7面向对象分析与设计&UML4.3顺序图中的消息消息

消息用来说明顺序图中不同活动对象之间的通信。它可在一个对象需要取消不同对象的进程时或者需要向另一个对象提供服务时,使用消息。消息从活动对象生命线到接收对象生命线的箭头表示。箭头上面标记要发送的消息,如下图所示。8面向对象分析与设计&UML4.3顺序图中的消息>>消息的限定消息可以包含条件以便限制它们只在满足条件时才能发送。条件显示在消息名称上面的方括号中。右图示例演示了如何建立一个顺序图来显示登录尝试。如果登录失败,会在放弃登录之前重试一次,如下图所示。9面向对象分析与设计&UML4.3顺序图中的消息UML1.4后定义的消息有:调用消息procedurecall异步消息asynchronous返回消息returnUML1.3前的消息还有:简单消息simpleRose扩充的消息阻止消息balking超时消息time-out10面向对象分析与设计&UML4.3顺序图中的消息调用消息:消息的发送者把控制传递给消息的接收者,等待接收者返回或放弃控制.调用消息必有一个与之配对的返回消息,但是可以不用画出.11面向对象分析与设计&UML4.3顺序图中的消息12面向对象分析与设计&UML4.3顺序图中的消息异步消息:消息的发送者把控制传递给消息的接收者,然后继续自己的工作,不等待接收者返回或放弃控制.UML1.4及以后UML1.3及以前13面向对象分析与设计&UML4.3顺序图中的消息下面示例演示了如何在登录文件的情况下使用异步消息。14面向对象分析与设计&UML4.3顺序图中的消息简单消息:如果所有的消息都是同步或者异步消息,那么为什么还要简单消息呢?因为有时候我们不关心消息是同步还是异步,此外在高层分析中,有时候没有必要指定一个消息是同步的还是异步的。如下面的示例所示。15面向对象分析与设计&UML4.3顺序图中的消息16面向对象分析与设计&UML4.3顺序图中的消息返回消息:表示从过程调用返回.如果是过程消息返回,则不用画出;如果是非过程消息,则必须画出.返回消息17面向对象分析与设计&UML4.3顺序图中的消息阻止消息:消息的发送者传递消息给接收者,如果接收者无法立即接收,则发送者放弃该消息.超时消息:消息的发送者发出消息给接收者并按指定时间等待,若接收者无法在指定时间内接收,则发送者放弃该消息.18面向对象分析与设计&UML4.3顺序图中的消息消息的语法格式[前置消息列表][警戒条件][消息顺序号][返回值:=]消息名称([参数列表])例子:2:display(x,y)简单消息1.3.1p:=find(specs)嵌套消息,有返回值[x<0]4:invert(x,color)条件消息3.1*:update()循环消息A3,B4/C2:copy(a,b)线程间同步19面向对象分析与设计&UML4.3顺序图中的消息顺序图的其它技术1.创建对象创建对象的标记符如下图中的示例所示。有一个主要步骤用来把“create”消息发送给对象实例。对象创建之后就会具有生命线,就像顺序图中的任何其他对象一样。现在可以像顺序图中的其他对象那样来使用该对象发送和接收消息。在处理新创建的对象,或者处理顺序图中的任何其他对象时,都可以发送“destroys”消息来删除对象。若要想说明某个对象被销毁,需要在被销毁对象的生命线上放一个X字符。20面向对象分析与设计&UML4.3顺序图中的消息顺序图的其它技术创建对象21面向对象分析与设计&UML4.3顺序图中的消息顺序图的其它技术22面向对象分析与设计&UML4.3顺序图中的消息2.分支和从属流

有两种方式来修改顺序图的控制流:使用分支和使用从属流。这两种方式很相似,各自的标记符略微不同。控制流的改变是由于不同的条件导致控制流走向不同的道路。

23面向对象分析与设计&UML4.3顺序图中的消息分支允许控制流走向不同的对象,如下图所示。24面向对象分析与设计&UML4.3顺序图中的消息

注意消息的开始位置是相同的,分支消息的结束“高度”也是相等的。这说明在下一步中,其中之一将会执行,如下图所示。25面向对象分析与设计&UML4.3顺序图中的消息

从属流还允许控制流根据条件改变,但是只允许控制流改变为相同对象的另一条生命线分支,如下图所示。26面向对象分析与设计&UML4.3顺序图中的消息

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

1)指出顺序图中的参与者和对象。

2)指出出错处理发生的位置。

3)按照控制流的顺序指出各个消息。28面向对象分析与设计&UML4.3顺序图中的消息29面向对象分析与设计&UML4.4建立顺序图的步骤

创建顺序图包含4项任务:

1)确定需要建模的工作流。

2)从左到右布置对象。

3)添加消息和条件以便创建每一个工作流。

4)绘制总图以便连接各个分图。30面向对象分析与设计&UML4.4建立顺序图的步骤确定交互过程的上下文识别参与交互过程的对象为每个对象设置生命线从引发这个交互过程的初始消息开始,在生命线之间自顶向下依次画出随后的各个消息.如果需要嵌套或(和)表示消息发生的时间点,使用FOC.如果需要说明时间约束,则在消息旁边加上约束说明.如果需要,可以为每个消息设置前置条件和后置条件.31面向对象分析与设计&UML4.4建立顺序图的步骤1)确定工作流建模顺序图的第一步是确定将要建模的工作流。对于这个练习,我们将要建模Gradingsystem的ViewGrades用例。为此,需要至少标识出3个要建模的工作流:

>>教师成功地检查学生分数

>>教师试图检查某个学生分数,但该学生在系统中不存在。

>>教师试图检查某个学生分数,但该学生分数在系统中不存在。

32面向对象分析与设计&UML4.4建立顺序图的步骤2)布置对象建模顺序图的下一步是从左到右布置所有的参与者和对象,包含要添加消息的对象生命线,如下图所示。33面向对象分析与设计&UML4.4建立顺序图的步骤3)添加消息和条件

接下来,对每一个工作流作为独立的顺序图建模。从基本的工作流开始,它是没有出错条件,并且需要最少决策的工作流。

注意选择适当的消息类型(异步、同步、简单和返回)。在本例中,基本工作流是教师成功地检查某个学生的分数,如下图所示。

第1个工作流34面向对象分析与设计&UML4.4建立顺序图的步骤35面向对象分析与设计&UML4.4建立顺序图的步骤接下来以独立的顺序图建模从属工作流。此处只建模否定的条件,如下图所示。第2个工作流36面向对象分析与设计&UML4.4建立顺序图的步骤

注意使用条件来指示在什么时候发送什么消息,如下图所示。第3个工作流37面向对象分析与设计&UML4.4建立顺序图的步骤4)绘制总图建模顺序图的最后一步是把所有独立的工作流连接为一个总图,如下图所示。在此阶段,如果觉得前面的消息和交互对于当前的顺序图过于详细,可以让它们更加泛化一些,但是在软件建模的下一个阶段,就会觉得初始的各个顺序图越详细越好。

38面向对象分析与设计&UML4.4建立顺序图的步骤39面向对象分析与设计&UML4.5协作图协作图是用于描述系统的行为是如何由系统成分协作实现的图.对象object链link消息message协作图中的元素:40面向对象分析与设计&UML4.5协作图>>多对象在协作图中,多对象指的是由多个对象组成的对象集合,一般这些对象是属于同一类的。当需要把消息同时发送给多个对象而不是单个对象时,就要用多对象这个概念。多对象用多个方框的重叠表示。1.对象对象这个概念前面已经多次提到,这里主要强调多对象和主动对象。41面向对象分析与设计&UML4.5协作图多对象的例子一个对象可能会向同一类的多个对象同时发送一个消息,例如,老师会让多个学生同时交作业。在多对象前面可以加上用方括号括起来的条件,前面加一个星号,用来说明消息发送给多个对象,如下图所示。42面向对象分析与设计&UML4.5协作图

>>主动对象

主动对象是一组属性和一组方法的封装体,其中至少有一个方法不需要接受消息就能主动执行(称做主动方法)。也就是说,主动对象可以在不接受外部消息的情况下自己开始一个控制流。在协作图中,主动对象的表示法除了矩形框边界要加黑加重外,其他方面与一般对象的表示法相同。43面向对象分析与设计&UML4.5协作图2.链

链用来在协作图中关联对象。它们代表一个来自类图的关联的实例。在协作图中,消息显示在链的旁边,一个链上可以有多个消息。在链上可以加一些修饰,如角色名、导航(表示链是双向还是单向)、链两端的对象是否有聚集关系等,但由于链是连接对象的,所以链的两端没有多重性标记。44面向对象分析与设计&UML4.5协作图3.消息

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

totalPrice:=compute(itemPrice,salesTax)返回值46面向对象分析与设计&UML4.6建立协作图的步骤协作图的建模有3个基本的步骤:

1)确定属于协作图的元素。

2)建模这些元素之间的结构关系。

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

首先,确定协作图中将会包含的元素或者类。从已经描述的用例中可以确定需要Teacher、Student和Grade类,其他类是否需要不太清楚。对于分数记录系统,我们需要一个Website类来提供进行交互的场所。还需要一个Database类来提供为学生检索信息的功能。最后,还需要一个Security类提供让Teacher登录系统的手段,如下图所示。49面向对象分析与设计&UML4.6建立协作图的步骤分数记录系统中的类Teacher类如何与Student类交互?Student类从哪里获取其数据?Teacher类如何登录系统?通过这些问题和其他问题,我们就会认识到需要更多的类才能完成目标。:Teacher:Student:Grade:Security:Database:Website50面向对象分析与设计&UML4.6建立协作图的步骤2.建模类之间关系下一步就是确定这些类之间的关系。在这一步中,着手建模早期阶段的协作图,在类角色之间添加链接和关联角色,如下图所示。51面向对象分析与设计&UML4.6建立协作图的步骤52面向对象分析与设计&UML4.6建立协作图的步骤3.建模实例层协作图最后一步就是在实例层建模协作图。这意味着需要把类角色修改为对象实例,并且指定执行用例的消息序列。这一步需要用到描述对象之间链接的消息标记符,包括控制点、迭代、创建实例,以及特定消息类型的规范。53面向对象分析与设计&UML4.6建立协作图的步骤54面向对象分析与设计&UML4.7顺序图与协作图的比较相同点规定责任,二者均直观地规定了发送对象和接收对象的责任.支持消息,二者均支持所有的消息类型.衡量工具,二者均是衡量耦合性的工具.不同点协作图强调参与交互的对象的组织结构;顺序图强调消息的时间顺序.顺序图可以反映对象的创建/激活/撤消;协作图不能.协作图能反应动作路径,消息必须有顺序号;顺序图没有.55面向对象分析与设计&UML4.7顺序图与协作图的比较汽车租赁系统中”客户还车”的顺序图56面向对象分析与设计&UML4.7顺序图与协作图的比较汽车租赁系统中”客户还车”的协作图57面向对象分析与设计&UML4.8工具支持(略)58面向对象分析与设计&UML4.9常见问题分析(1)如何在顺序图中表示消息的循环发送?在消息名前加循环条件,例如:

1.1*[forallorderlines]:message1()2.1*[i:=1..n]:message2()59面向对象分析与设计&UML4.9常见问题分析(2)如何在顺序图中表示消息的条件发送?①在消息上加警戒条件,如:[x<0]4:invert(x,color)②在消息名字前加条件子句,如:3.1[x>y]message()③使用文字说明④分成多个顺序图60面向对象分析与设计&UML4.9常见问题

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论