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

下载本文档

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

文档简介

1、第第4章章 顺序图与协作图顺序图与协作图UML- 2 -UML- 2 -nInteraction diagram,是描述对象之间以及对象与,是描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次参与者之间的动态协作关系以及协作过程中行为次序的图形文档;序的图形文档;n通常用来描述一个用例的行为,实现一个用例,完通常用来描述一个用例的行为,实现一个用例,完成对系统的动态行为建模;成对系统的动态行为建模;n包含两种:包含两种:顺序图(或时序图,顺序图(或时序图,sequence diagram)协作图(协作图(collaboration diagram)UML- 3 -UML- 3

2、-顺序图顺序图面向面向时间时间描述对象交互的图描述对象交互的图协作图协作图对象间对象间消息协作消息协作的结构化视图的结构化视图UML- 4 -UML- 4 -UML- 4 -概要概要顺序图用来表示用例中的行为顺序。任何用例都可以使用顺序图用来表示用例中的行为顺序。任何用例都可以使用顺序图进一步阐明和实现。顺序图进一步阐明和实现。顺序图展示对象之间的交互,这些交互是指在场景或用例顺序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的。的事件流中发生的。 顺序图属于动态建模。顺序图属于动态建模。 顺序图的重点在消息序列上,也就是说,描述消息是如何顺序图的重点在消息序列上,也就是说,描述

3、消息是如何在对象间发送和接收的。表示了对象之间传送消息的时间顺在对象间发送和接收的。表示了对象之间传送消息的时间顺序。序。浏览顺序图的方法是:从上到下查看对象间交换的消息。浏览顺序图的方法是:从上到下查看对象间交换的消息。UML- 5 -UML- 5 -按照时间顺序显示对象之间交互的图按照时间顺序显示对象之间交互的图UML- 6 -UML- 6 -UML- 6 -顺序图与用例图和类图的关系顺序图与用例图和类图的关系UML- 7 -UML- 7 -移动用户移动用户移动网络移动网络与对方通话与对方通话下载图符下载图符下载铃声下载铃声管理电话本管理电话本UML- 8 -UML- 8 - : 移动用户

4、移动用户 : 移动按键移动按键 : 移动显示移动显示 : 移动手机移动手机 : 移动基站移动基站按数字键按数字键显示按键号码显示按键号码按发送键按发送键连接基站连接基站建立连接建立连接连接成功连接成功显示连接成功显示连接成功UML- 9 -UML- 9 - : 移动用户移动用户1: 按数字键按数字键3: 按发送键按发送键 : 移动按键移动按键2: 显示按键号码显示按键号码 : 移动显示移动显示 : 移动手机移动手机 : 移动基站移动基站4: 连接基站连接基站5: 建立连接建立连接6: 连接成功连接成功7: 显示连接成功显示连接成功UML- 10 -UML- 10 -UML- 10 -顺序图中的

5、事物(建模元素)顺序图中的事物(建模元素)事物名称事物名称解释解释图图参与者参与者与系统、子系统或类发生交互作用的外与系统、子系统或类发生交互作用的外部用户部用户(参见用例图定义参见用例图定义)。对象对象顺序图的横轴上是与序列有关的对象。顺序图的横轴上是与序列有关的对象。对象的表示方法是:矩形框中写有对象对象的表示方法是:矩形框中写有对象或类名,且名字下面有下划线。或类名,且名字下面有下划线。生命线生命线坐标轴纵向的虚线表示对象在序列中的坐标轴纵向的虚线表示对象在序列中的执行情况执行情况(即发送和接收的消息,对象的即发送和接收的消息,对象的活动活动)这条虚线称为对象的这条虚线称为对象的“生命线

6、生命线”。消息符号消息符号消息用从一个对象的生命线到另一个对消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。在图中从上到下排列。UML- 11 -UML- 11 -n参与者和对象按照从左到右的顺序排列参与者和对象按照从左到右的顺序排列n一般最多两个参与者,他们分列两端。启动这个用例的活一般最多两个参与者,他们分列两端。启动这个用例的活动者往往排在最左边;接收消息的活动者则排在最右端;动者往往排在最左边;接收消息的活动者则排在最右端;n对象从左到右按照重要性排列或按照消息先后顺序排列。对象从左到右按照重要性排列或按照消息先

7、后顺序排列。UML- 12 -UML- 12 -n 对象的命名方式有三种:对象的命名方式有三种:l 包括对象名和类名包括对象名和类名l 类名(匿名对象)类名(匿名对象)l 对象名(不关心类)对象名(不关心类)UML- 13 -UML- 13 -n生命线(生命线(Lifeline):):l每个对象都有自己的生命线,用来表示在该用例中一个对每个对象都有自己的生命线,用来表示在该用例中一个对象在一段时间内的存在象在一段时间内的存在l垂直的虚线垂直的虚线l如果对象生命期结束,则用注销符号表示如果对象生命期结束,则用注销符号表示l对象默认的位置在图顶部,对象默认的位置在图顶部,表示对象在交互之前已经存在

8、表示对象在交互之前已经存在l如果是在交互过程中由另外如果是在交互过程中由另外的对象所创建,则位于图的的对象所创建,则位于图的中间某处。中间某处。UML- 14 -UML- 14 -n激活期激活期(activation)/控制焦点(控制焦点(focus of control)l对象在一段时间内获得了焦点,也称激活期对象在一段时间内获得了焦点,也称激活期l对象执行某个动作的时期对象执行某个动作的时期l空心矩形条空心矩形条l激活期的长短意味着对象执行激活期的长短意味着对象执行某个动作的时间有多长,可以某个动作的时间有多长,可以通过约束通过约束10ms来限制执行来限制执行时间的长短。时间的长短。UML

9、- 15 -UML- 15 -n面向对象方法中,消息是对象间交互信息的主要方面向对象方法中,消息是对象间交互信息的主要方式。式。n结构化程序设计中,模块间传递信息的方式主要是结构化程序设计中,模块间传递信息的方式主要是过程(或函数)调用。过程(或函数)调用。n对象对象A向对象向对象B发送消息,可以简单地理解为对象发送消息,可以简单地理解为对象A调用对象调用对象B的一个操作(的一个操作(operation)。)。UML- 16 -UML- 16 -n顺序图中,尽力保持消息的顺序是从左到右顺序图中,尽力保持消息的顺序是从左到右排列的。排列的。n一个顺序图的消息流开始于左上方,消息一个顺序图的消息流

10、开始于左上方,消息2的的位置比消息位置比消息1低,这意味着消息低,这意味着消息2的顺序比消的顺序比消息息1要迟。因为西方的阅读习惯是从左到右。要迟。因为西方的阅读习惯是从左到右。n顺序图中消息编号可显示,也可不显示。协顺序图中消息编号可显示,也可不显示。协作图中必须显示。作图中必须显示。UML- 17 -UML- 17 -UML- 17 -l简单的例子简单的例子从参与者到对象和从对象从参与者到对象和从对象到参与者之间发送的消息到参与者之间发送的消息从对象传递给另一个对从对象传递给另一个对象的消息象的消息在类图中的类的在类图中的类的对象对象使用系统的使用系统的参与者,这参与者,这个系统是为个系统

11、是为某个用例的某个用例的某个场景设某个场景设计的计的对象生命线表示从上到下对象生命线表示从上到下的时间顺序,消息的时间顺序,消息1在消息在消息2之前发生,消息之前发生,消息2在消息在消息3之前发生之前发生窄长方框用以强调这个窄长方框用以强调这个部分处于活动状态部分处于活动状态 operation (parameter list) 向哪个对象发消息向哪个对象发消息实际上就是调用它的实际上就是调用它的类中的操作,就是调类中的操作,就是调用箭头指向的对象所用箭头指向的对象所在类的在类的 一个一个operation。例:例:订单类发消息给客户类订单类发消息给客户类调用客户类中的调用客户类中的“验证验证

12、客户客户”操作操作UML- 18 -UML- 18 -UML- 18 -l复杂的例子复杂的例子信息亭售票中心信用卡服务从这个例子中可以看出:从这个例子中可以看出:Kjosk类中的操作有类中的操作有 Show Available (seat-list) Demand Payment (cost) printtickets (performance, seats) eject cardBox Office中的操作有中的操作有 Request (count, performance) Select Seats Insert Card (Card Number) authorizedCredit Ca

13、rd Service类中的操作有类中的操作有 charge(card number, cost) 此图是描述购票这个用例的顺序图。顾客在信息亭与售票中心通话触发了这个用例的执行。顺序图中付款这个用例包括售票中心与信息亭和信用卡服务处使用消息进行通信过程。此图中存在的事物有:此图中存在的事物有: 对象对象(信息亭信息亭 Kjosk ,售票中心,售票中心 Box Office, 信用卡服务信用卡服务 Credit Card Service ),生命线,消息符号。,生命线,消息符号。信息亭发Request (count, performance)消息给售票中心,表示调用售票中心类的Request (

14、count, performance)操作,来查询演出的信息。售票中心发Show Available(seat-list)消息给信息亭,表示调用信息亭类中的Show Available(seat-list)操作,给出可用的座位表。UML- 19 -UML- 19 -nUML三种消息:三种消息:l调用(调用(Procedure Call)消息)消息-l异步(异步(Asynchronous)消息)消息l返回(返回(Return)消息)消息nRose扩充:扩充:l阻止(阻止(Balking)消息)消息l超时(超时(Time-out)消息)消息UML- 20 -UML- 20 -nUML三种消息:三种

15、消息:l调用(调用(Procedure Call)发送者把消息发送后,等待直到接收者返回控制,可发送者把消息发送后,等待直到接收者返回控制,可以表示以表示同步同步;实心箭头符号实心箭头符号UML- 21 -UML- 21 -nUML三种消息:三种消息:l异步(异步(Asynchronous)消息发送后,发送者继续操作,不等待,常用于并发;消息发送后,发送者继续操作,不等待,常用于并发;UML- 22 -UML- 22 -nUML三种消息:三种消息:l 返回(返回(Return)表示消息的返回。消息上方放置返回值表示消息的返回。消息上方放置返回值同步消息的返回可以画出(如果想明确表达返回值),也

16、可以不画出,直接隐含。同步消息的返回可以画出(如果想明确表达返回值),也可以不画出,直接隐含。异步消息可以有返回,也可以没有。(可以响应异步消息,也可以不响应该异步消异步消息可以有返回,也可以没有。(可以响应异步消息,也可以不响应该异步消息。)息。)如果顺序图上显示有编号,则返回消息的编号和当初发送消息的编号完全一样。如果顺序图上显示有编号,则返回消息的编号和当初发送消息的编号完全一样。虚线箭头虚线箭头表示,和依赖关系不要混淆表示,和依赖关系不要混淆UML- 23 -UML- 23 -v自调用(自调用(Self Call)l某对象自己调用自己的操作某对象自己调用自己的操作lUML标记标记 (嵌

17、套的矩形条)(嵌套的矩形条) Rose标记标记UML- 24 -UML- 24 -nRose新增消息新增消息l阻止(阻止(Balking)接收者如果无法立即接收消息,则发送者放弃该消息接收者如果无法立即接收消息,则发送者放弃该消息l超时(超时(Time-out)如果接收者无法在指定的时间内接收消息,则发送者如果接收者无法在指定的时间内接收消息,则发送者放弃该消息放弃该消息nQ:这两种消息可以看做是同步:这两种消息可以看做是同步or异步消息?异步消息?UML- 25 -UML- 25 -n 格式格式前缀前缀警戒条件警戒条件顺序表达式顺序表达式返回值返回值:=消息名消息名(参数列表参数列表)例:例

18、:2: display () 简单消息简单消息1.3.1: p:=find() 带返回值的嵌套消息带返回值的嵌套消息x0 4: invert(x, color) 条件消息条件消息3.1 *x = 1.10 : update() 循环消息循环消息a3,b4/c2: copy(a,b) 线程同步线程同步1.1a, 1.1b/1.2: continue() 带前缀消息带前缀消息在发送线程在发送线程c的第的第2个消个消息之前,必须先发送线息之前,必须先发送线程程a的第的第3个消息和线程个消息和线程b的第的第4个消息个消息在发送消息在发送消息1.2之前必须已经同之前必须已经同时发送并发消息给线程时发送并

19、发消息给线程a和和bUML- 26 -UML- 26 -n前缀前缀(predecessor)l语法:消息序列号语法:消息序列号,消息序列号消息序列号, . /l前缀是一个用来同步线程或路径前缀是一个用来同步线程或路径(path)的表达式的表达式l意思是在发送当前消息之前指定序列号的消息被意思是在发送当前消息之前指定序列号的消息被处理处理(必须连续执行必须连续执行)l消息序列号之间用逗号隔开,用斜杠结束消息序列号之间用逗号隔开,用斜杠结束例如例如 1.1a, 1.1b/1.2: continue() ,在发送消息,在发送消息1.2之之前必须已经同时发送并发消息给线程前必须已经同时发送并发消息给线

20、程a和和bUML- 27 -UML- 27 -n警戒条件警戒条件(guard-condition)l语法语法: 条件短语条件短语 l条件短语通常用伪代码或真正的程序语言来表示,条件短语通常用伪代码或真正的程序语言来表示,UML并不规定其语法并不规定其语法例如,例如,x0 4: invert(x, color) UML- 28 -UML- 28 -n序列表达式序列表达式 (sequence-expression)l语法语法 integer | name recurrence :linteger为指定消息顺序的序列号,消息为指定消息顺序的序列号,消息1是消息序列的开始是消息序列的开始消息,消息,1

21、.1是消息是消息1的处理过程中的第一条嵌套的消息,消的处理过程中的第一条嵌套的消息,消息息1.2是消息是消息1的处理过程中的第二条嵌套的消息,一个消的处理过程中的第二条嵌套的消息,一个消息序列的例子如息序列的例子如1, 1.1, 1.2, 1.2.1, 1.2.2, 1.3, 等。这样的序列等。这样的序列号不仅能够表示消息的顺序而且还能表示消息的嵌套关系号不仅能够表示消息的顺序而且还能表示消息的嵌套关系(当消息是异步消息时消息为嵌套的操作调用及返回当消息是异步消息时消息为嵌套的操作调用及返回)lname表示并发控制线程,例如表示并发控制线程,例如1.2a和和1.2b为同时发送的并为同时发送的并

22、发消息发消息UML- 29 -UML- 29 -lrecurrence表示一个条件或迭代的执行,有两种选择表示一个条件或迭代的执行,有两种选择* 循环子句循环子句 循环子句循环子句(iteration-clause)用来指定一个循环用来指定一个循环(重复执行重复执行)例如:一个包括循环的消息例如:一个包括循环的消息 1.1 *x = 1.10 : doSomething() 条件子句条件子句 条件子句一般用来表示分支而不是用作警戒条件条件子句一般用来表示分支而不是用作警戒条件x Create collaboration Diagram;或者,直接按下;或者,直接按下F5键;键; 从协作图转换成

23、顺序图从协作图转换成顺序图 1、从、从collaboration框图创建框图创建sequence框图:框图: 2、打开、打开collaboration框图;框图; 3、选择、选择Browse Create Sequence Diagram;或者,直接按下;或者,直接按下F5键;键;UML- 57 -UML- 57 -1、确定系统中的类储户读卡机帐户ATM屏幕存钱机UML- 58 -UML- 58 -2、确定类之间关系储户ATM屏幕帐户存钱机读卡机UML- 59 -UML- 59 -3、对象实例之间协作关系 : 储户 : ATM屏幕 : 读卡机 : 存钱机 : 帐户2:读卡13:验钱数 14:帐

24、户加钱1:插入卡5:提示输入PIN 8:提示选择事务 10:提示金额6:输入PIN9:选择存钱事务 11:输入金额7:验证PIN4:打开帐户16:退卡3:屏幕初始化15:打印收条12:接收钱UML- 60 -UML- 60 -UML- 61 -UML- 61 -(1) 如何在顺序图中表示消息的循环发送如何在顺序图中表示消息的循环发送?在消息名前加循环条件,例如:在消息名前加循环条件,例如: 1.1 *for all order lines: message1() 2.1 *i:= 1.n: message2()UML- 62 -UML- 62 -(2) 如何在顺序图中表示消息的条件发送如何在顺序图中表示消息的条件发送? 在消息上加警戒条件在消息上加警戒条件

温馨提示

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

评论

0/150

提交评论