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

下载本文档

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

文档简介

会计学1第顺序图和协作图6.1顺序图概述

顺序图的主要用途之一是用来为某个用例的泛化功能提供其所缺乏的解释,即把用例表达的需求,转化为进一步、更加正式层次的精细表达。

顺序图描述了对象之间传递消息的时间顺序,用来表示用例中行为顺序。用例常常被细化为一个或多个的顺序图。顺序图用一个二维图描述系统中各个对象之间的交互关系。主要由四个标记符组成:对象、生命线、消息和激活。

第1页/共46页6.1顺序图概述在顺序图中参加交互的各个对象沿横轴排列,发起交互的对象通常放在左边,其他对象依次放在右边。这些对象发送和接收的消息沿纵轴方向按时间顺序从上到下放置。该在顺序图中纵轴为时间轴。

顺序图清晰地描述了系统随时间推移的控制流轨迹。图中每个对象在单独的一列中,每个对象符号放置在代表生成对象消息的箭头末端,其垂直位置表示该对象第一次生成的时间。第2页/共46页6.2顺序图元素

顺序图描述了对象以及对象之间传递的消息,强调对象之间的交互是按照时间的先后顺序发生的,这些特定顺序发生的交互序列从开始到结束需要一定的时间。在顺序图中主要包括了以下四种元素:对象生命线激活消息第3页/共46页6.2顺序图元素类定义了对象可执行的各种行为,但在面向对象系统中,行为的执行者是对象,而不是类,因此在顺序图中通常描述的是对象层次而不是类层次。

面向对象分析中最基本的单位是对象,它代表现实世界中一个一个地具体事物。

在顺序图中使用一个方框表示一个对象,对象的名字下面有一个下划线,一个学生对象“张三”如图所示。

6.2.1对象张三第4页/共46页6.2顺序图元素在顺序图中也可以使用用例图中的参与者图符。如果一个对象在顺序图的第一个操作之前就已经存在,那么该对象的图符就应该画在顺序图的顶部。如果一个对象是在顺序图的交互过程中,由其他对象创建的,那么该对象就不应该出现在顺序图的顶端,而应该出现在创建该对象消息的末端。第5页/共46页6.2顺序图元素

对象在垂直方向拖出的虚线是对象的生命线,用于表示对象是存在的时间范围。

对象的生命线是一个时间线,从顺序图的顶部一直延续到顺序图的底部,所用的长度取决于交互的维持长度。

6.2.2生命线第6页/共46页6.2顺序图元素

对象生命线上的窄矩形条被称为激活,激活表示该对象正在执行某个操作,图符如图所示。激活条的长短表示执行操作的时间。一个被激活的对象要么执行自己的代码,要么等待另一个对象的返回结果。

6.2.3激活第7页/共46页6.2顺序图元素

激活在顺序图中不能够单独存在必须与生命线连在一起使用,当一条消息被传递给对象的时候,该消息将触发该对象的某个行为,此时该对象就被激活了。通常情况下,表示激活的矩形的顶点是消息和生命线交汇的地方,表示对象从此时起开始获得控制权,而矩形的底部则表示该次交互已经结束,或对象的已经交控制权交出。

第8页/共46页6.2顺序图元素

在顺序图中,对象都不是孤立存在的,这些对象之间是通过消息进行通讯。对象通过相互传递消息来进行相互作用。使用消息是用来说明顺序图中不同活动对象之间的通信过程。一个消息可以激发一个对象的某个操作,完成一定的功能。

6.2.4消息顺序图中,消息由从一个对象的生命线指向另一个对象的生命线的直线箭头表示,箭头上标注要发送的消息名。在消息的起点隐含着发送事件,消息的终点隐含着接收事件。

第9页/共46页6.2顺序图元素

在顺序图中消息的次序是由它们在垂直轴上的位置来决定的,在垂直轴上靠上的消息先发送,靠下的消息后发送。在UML中,消息的发送方和消息的接收方可以是同一个对象。也就是说,对象也可以将消息发送给自己本身,也就是自己给自己发送消息

在UML中,每一条消息可以带有一个名称说明,可以带参数。消息还可以包含条件以限制它们只在满足条件时才能被发送。条件标注在消息的名称上的方括号中。

第10页/共46页6.2顺序图元素从消息和消息端的元模型可以得知,消息包含了消息种类(messagekind)和消息性质(messagesort)两个属性。

消息中包括四种消息种类:

完整消息(completemessage):一般常见的消息都是完整消息,该消息的发送事件和接受事件都是存在的。

迷途消息(lostmessage):只有发送事件,但没有接收事件的消息称为迷途消息,对于迷途消息,在表示时需要在消息的箭头端加上一个实心的小圆。第11页/共46页6.2顺序图元素寻获消息(foundmessage):缺少了发送事件,只有接收事件的消息称为寻获消息。对于寻获消息,在表示时需要在消息的非箭头端加上一个实心的小圆。未知消息(unknownmessage):既没有发送事件,也没有接收事件的消息称为未知消息。对于未知消息,UML中也没有详细说明这种消息,也许这个消息在实际应用时并不真实存在。

第12页/共46页6.2顺序图元素

根据通信性质的不同,UML中定义了几种消息的性质。在UML2.0规格书中,定义了四种消息性质,在UML2.1.1中,消息性质从原来的四种变为了六种,这是UML中变化比较大的部分。

创建消息(createMessage):用来创建对象的消息,称为创建消息。它的图符是带开放性箭头的虚线,箭头的指向目标对象,如下图所示。

第13页/共46页6.2顺序图元素

同步调用(synchCall):同步调用消息代表一个操作调用的控制流。同步调用消息的发送方把控制传递给消息的接收者,然后暂停活动,等待消息接受者的应答,收到应答后才继续自己的操作。同步调用消息被水平的置于对象的生命线之间,水平放置的方式说明消息的传递是瞬时的,即消息在发出之后会马上被收到。它的图符是带实心箭头的实现,如下图所示。第14页/共46页6.2顺序图元素回复消息(replymessage):目标对象执行结束时,会发出回复消息给来源对象。它的图符是带开放式箭头的虚线,从负责执行的目标对象反向指回给来源对象,如下图所示。

异步调用(asynchCall):异步调用消息表示消息的发送对象不用等待消息接收对象回应的返回消息,即可以开始另一个活动。异步调用消息在某种程度上规定了发送方和接收方的责任,即发送方只负责将消息发送到接收方,至于接收方如何响应,发送方则不需要知道。

第15页/共46页6.2顺序图元素

最常见的实现异步消息的方式是使用线程。当系统发送异步消息时,需要启动一个线程在后台运行。异步调用的图符如下图所示。

异步信号(asynchSignal):同步信号消息和异步信号消息的区别在于,消息发送对象是否等待目标执行结束才继续往下执行。异步信号消息类似于最常用的简单消息,一般情况下,如果不必强调消息的性质,则可以使用异步信号消息代表其他性质的消息。它的图符如下图所示。

第16页/共46页6.4顺序图理解下图给出了一个图书超期检查系统的顺序图示例,用来描述图书馆中图书超期检查的过程。参与图书检查的对象有四个:系统、图书、读者及通知单。PrintNotice()CheckAllBooks()CheckTimeExceding()GetBookInformations()GetReaderInformations()Create()系统图书读者通知单第17页/共46页6.4顺序图理解对象“系统”是图书管理系统中的一个控制程序,它负责定期检查是否有超期图书;“图书”对象是图书馆中的每一本具体的图书;“读者”对象是借阅图书的某个具体的读者;“通知单”对象是一个具体的超期通知单。通过图中对象的放置位置可以看出,对象“系统”、“图书”和“读者”是在发送第一条消息前就存在的,而对象“通知单”的位置没有在顺序图的顶端,它是在消息发送的过程中,通过对象“系统”发送的“Create”消息创建的。第18页/共46页6.4顺序图理解上图描述的超期检查过程如下:

第一步,系统程序对象负责定期对所有外借图书进行超期检查,每次检查时首先发送消息“CheckAllBooks”,用来检查所有外借图书,获取图书借阅时间和期限信息。

第二步,系统程序对象向对象“图书”发送消息“CheckTimeExceding”检测每一本外借图书是否超期。

第三步,系统程序对象向对象“图书”发送消息“GetBookInformations”来获取超期图书的信息。第19页/共46页6.4顺序图理解

第四步,系统程序对象向对象根据超期图书信息向相应的“读者”对象发送消息“GetReaderInformations”得到图书对象信息和相应读者对象信息。

第五步,系统程序对象负责发送一个“Create”消息,创建一个新对象“通知单”,通知单中记录超期图书和相应的读者信息。

第六步,系统程序对象负责向“通知单”对象发送一个消息PrintNotice,打印出生成的通知单。第20页/共46页6.4顺序图理解在顺序图中的控制流并不是只能按照从上到下的顺序依次进行,控制流也可以进行修改,条件分支就是其中一种。

6.4.1条件分支

顺序图中的分支是使用带条件的消息来实现的,这个条件称为守卫条件。只有当条件为真的时候才可以发送和接收消息。如果所有分支上的守卫条件都是互斥的,那么就会有互斥的消息箭头,一次只能发送一条消息。如果多个分支上的条件并不互斥,那么可以并行发送多条消息。

第21页/共46页6.4顺序图理解

条件[打印机忙]和[打印机空闲]是两个互斥的条件,打印服务器根据条件来确定消息发给对象“打印机”还是对象“打印队列”。两个消息都是从同一点出发的,这表示两个分支在同一时间点上只能执行一个分支。

[打印机忙][打印机空闲]打印文件打印队列计算机打印服务器打印机第22页/共46页6.4顺序图理解

从属流与条件分支不同,从属流允许某一个对象根据不同的条件改变执行不同的操作,即可以创建对象的另一个生命线分支。

6.4.2从属流删除打印任务打印服务器打印队列添加打印任务如图中所示,打印服务器会根据需要从打印队列中删除打印任务或根据需要向打印队列中添加打印任务。第23页/共46页6.4顺序图理解

顺序图中的消息通常都是水平的,表明消息的传递是瞬时的,也就是说在消息传递的过程中不会发生其他的事件。但有些情况下,从一个对象到另一个对象的消息可能存在一定的时间延迟,也就是说消息的传递不是瞬时完成的。对于这种带有延迟的消息的表示,可以将消息的箭头向下倾斜6.4.3消息延迟第24页/共46页6.4顺序图理解比较典型的消息延迟的例子就是电子邮件的应用,由于邮件服务器是外部对象,用户与邮件服务器的相互通讯需要必要的网络延迟,因此可以把用户和邮件服务器的连接和从邮件服务器下载邮件的活动表示为延迟消息。返回邮件用户邮件服务器连接连接时间小于1秒第25页/共46页6.4顺序图理解如果为了强调需要对多个对象重复发送某个消息,可以在顺序图中添加循环标识符号,顺序图中表示循环执行的消息有三种方式。6.4.4循环

第一种,在需要循环重复执行的消息前添加符号“*”,并在其后的中括号中写明具体的条件。

校验打印文件*[foreachfile][check()=true]计算机打印服务器打印队列第26页/共46页6.4顺序图理解

第二种,在时间轴上注释表明消息的重复执行,使用大括号标明说明文字。如图所示,打印服务器对象时间轴上大括号内标注重复执行的动作。

校验打印文件{对每个文件进行校验,直到全部校验合格}计算机打印服务器打印队列第27页/共46页6.4顺序图理解

第三种,使用矩形框将需要重复执行的消息框起来,并在中括号内说明重复执行的条件,如图所示。矩形框框内为需要重复执行的消息,矩形框下中括号内是重复执行的条件。打印文件打印队列打印机打开文件读取时间信息打印时间信息[直到队列最后一个文件读取打印完毕]关闭文件删除队列中文件第28页/共46页6.4顺序图理解

在UML2.0中,为了帮助建模人员处理顺序图中需要更详细描述的细节,显示更加复杂的交互,创建更有结构化的顺序图,提供了顺序图片段。利用顺序图片段可以表示比较复杂的交互,例如循环和迭代等等。6.4.5顺序图片段顺序图片段被描述成顺序图中框起来一部分交互的矩形。顺序图片段矩形与顺序图中某部分交互重叠。顺序图片段中可以包含任意数目的交互,甚至还可以包含嵌套片段。顺序图片段矩形的左上角包含一个运算符,以表明类型。

第29页/共46页6.4顺序图理解片段类型参数作

用ref无分解大型的顺序图,类似于用例关系中的include。assert无指示包含在片段中的交互必须完全按照它们的指示发生,否则片段无效。loop有循环执行该片段内的交互,直到判断条件为假。这类似于程序设计语言中的循环语句break无当包含在break片段中的交互发生时,则退出任何一个交互。这类似于程序设计语言中的break语句。alt有根据判断条件,选择片段中的一个交互执行。类似于程序设计语言中的if…else语句。opt有包含在此片段中的交互只有在判断条件为真时才执行。neg无不允许执行该片段中的交互,多用户异常处理。par无片段中的各个交互并行执行。顺序图片段

第30页/共46页6.5顺序图应用

在进行顺序图模型创建时,主要遵循以下步骤:确定用例的需求找出需求中涉及的对象找出对象间的消息的传递构建顺序图以“图书超期检查”为例,介绍顺序图的设计过程,具体的过程见书。第31页/共46页6.6协作图概述协作图与顺序图一样也是用于描述系统中各对象的交互关系并展现对象间的消息传递,但两者侧重点不同,顺序图着重于交互的时间顺序,而协作图着重于描述协作对象间的交互和连接。还可以从另一个角度来看两种图的定义,顺序图是按照时间的顺序布图,而协作图是按照空间来布图。

第32页/共46页6.7协作图元素协作图中的主要建模元素包括:对象消息链第33页/共46页6.7协作图元素协作图中的对象是类图中类的实例,对象在对象框中表示,通常不带属性定义部分。在UML顺序图和协助图中,对象可以使用三种图符来表示,具体的对象表示方式如图所示。

6.7.1对象对象名(A)对象名:类名(B):类名(C)第34页/共46页6.7协作图元素协作图中,有时信号或操作是应用于一个对象集而不是单一对象上,UML提供表示这种对象集合的容器类“多对象”。在协作图中,多对象指的是由多个对象组成的对象集合,一般这些对象是属于同一类的。多对象用多个方框重叠表示,图符如图所示。

6.7.2多对象

单对象给多对象同时发送一个消息时,需要在消息前面加一个星号,并加上用方括号括起来的条件。

对象第35页/共46页6.7协作图元素在协作图中,主动对象是一组属性和方法的封装体,主动对象中至少有一个方法不需要接收消息就能主动执行。也就是说主动对象可以在不接受外部消息的情况下自己开始一个控制流。

6.7.3主动对象在协作图中,主动对象的图符于普通对象基本相同,只是外部边框的线条要加黑加粗,如图所示。

对象名第36页/共46页6.7协作图元素

链用来在协作图中关联对象。它代表一个来自类图的关联实例。在协作图中,消息显示在链上可以加一些修饰,例如角色名、导航(表示链是双向还是单向)、链两端的对象是否有聚集关系等,但由于链是连接对象的,所以链的两端没有多重性标记。链的图符就是简单的实线。

6.7.4链第37页/共46页6.7协作图元素

在协作图中,对象与对象之间的相互作用是通过传递消息来实现的,消息是对象与对象之间通信的方式。

消息使用一条带箭头的连线来表示,消息中箭头来指示消息沿着关系传递的方向。一条连线可以表示一个或多个消息,消息的名称标在连线的上面,也可以给消息增加参数并标上一些控制信息。

6.7.5消息第38页/共46页6.7协作图元素消息的详细说明,消息标签语法规则如下:

前驱守卫条件序号表达式返回值:=消息名(参数列表)

前驱:是指在发送当前消息之前必须被处理的所有消息。

守卫条件:通常用代码表示,UML没有规定语法。

序号表达式:是以小数点分割的序号项列表,每个子句代表交互中的一个嵌套层次。如果所有控制都是并发的,那么没有嵌套。

序号项语法:[整数|名字][循环]第39页/共46页6.7协作图元素

名字指一个并发控制线程的名字,如果两条消息的序号表达式只有最后一个名字不同,那么它们是同一层上的并发控制流。

循环表示重复执行或条件执行,语法:*[重复子句]/[条件子句]。UML中用双竖线“||”表示消息的并发执行。

返回值:表示通信结束后返回的数值列表。可以作为后续消息的参数。如果消息不返回任何值,可以省略赋值操作符和返回值子句。

第40页/共46页6.7协作图元素协作图中的消息种类与顺序图中的消息种类完全相同,在一般应用中,主要使用以下三种,其他几种消息应用相对较少。

6.7.6消息种

温馨提示

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

评论

0/150

提交评论