顺序图和协作图
软件工程---交互建模之交互图,顺序图与协作图
2.5 消息
格式
[前缀][守卫条件][顺序表达式][返回值:=]消息名([参数列表])
例:
2: display ()
简单消息
1.3.1: p:=find()
带返回值的嵌套消息
[x<0] 4: invert(x, color) 条件消息
3.1 *[x = 1..10] : update() 循环消息
[ 条件子句 ] 条件子句一般用来表示分枝而不是用作守卫条件[x<0]是两个可
以用来分枝的条件子句这两个条件只能有一个为真因而只有一 个分枝被执行(即发送与分枝有关的消息) 条件子句和循环子句都可以用伪代码或真正的编程语言来表示 序列表达式用冒号结束
返回值、消息名和参数表
返回值表示一个操作调用(即一个消息)的结 果
顺序图中消息编号可显示,也可不显示。 协作图中必须显示Procedure Call) 异步(Asynchronous) 返回(Return) 自关联消息(Self Message)
2.5 消息
UML三种消息:
调用(Procedure Call) 发送者把消息发送后,等待直到接收者返回控制, 可以表示同步(synchronous message); 实心箭头符号
包括对象名和类名 类名(匿名对象) 对象名(不关心类)
2.3 生命线
生命线(Lifeline):
每个对象都有自己的生命线,用来表示在该用例中一个对象在一段时 间内的存在
垂直的虚线 如果对象生命期结束, 则用注销符号表示 对象默认的位置在图 顶部,表示对象在交互 之前已经存在 如果是在交互过程中 由另外的对象所创建, 则位于图的中间某处。
顺序图
面向时间描述对象交互的图
协作图
实验五--1 顺序图和协作图
实验五—1 顺序图、协作图一、实验目的1.理解顺序图的基本概念。
2.理解协作图的基本概念。
3.掌握在Rational Rose 中绘制顺序图、协作图的操作方法。
二、实验器材1.计算机一台。
2.Rational Rose 工具软件。
三、实验内容通过对课堂学习和前面的实验,使我们完成了图书馆的管理系统的需求分析,并从业务对象中抽象出了类。
现在需要对前面所给出的用例进行实现,而用例的实现主要由顺序图来描述系统的动态特性,协作图与顺序图是同构的,Rose 可自动转换。
现指派你运用课堂所学的相关知识,完成如下任务:1.对图书管理功能中的借书用例、还书用例进行动态建模。
四、实验步骤4.1 分析阶段的动态建模1.分析:在分析阶段,绘制的顺序图中,所有消息可以使用便于理解的自然语言来描述,并且可以仅在实体类中识别对象职责,而不涉及边界类和控制类。
根据课堂讲授,参见教材P213 可完成借书用例和还书用例分析阶段的动态建模。
2.绘图步骤:(1)鼠标右击导航窗口“Logicl View”节点,选择“New——Package”,建立1 个子包:“Sequence Di ag ra m”(用于存放顺序图、协作图),完成后如图 3.1 所示。
(2)如图 3.2 所示,鼠标右击“Sequence Diagram”子包,选择快捷菜单项“New——Sequence Di ag ram”,创建一张新的顺序图,取名为“借出图书”(注意:为了好对应,顺序图名称最好与相应的用例名称相同)。
鼠标双击新建的顺序图,在右边绘图窗口中将其打开,如图 3.3 所示。
(3)设置支持嵌套消息的环境:选择主菜单项“Tools——O ptions”,打开Rose 环境设置的对话框,点击“D i a g r a m”选项卡,在如图3.4所示界面中,将“D i s p l a y”下的“Hierarchical Message”选中,点击“确定”即可。
图 3.1图 3.2图3.3图3.4(4)绘制类:从导航窗口中,将“Use Case View”节点下的参与者“图书管理员”拖到绘图窗口;将“Class Diagram”包下“BO”实体包中的相关类“Reader”、“ResourceItem”、“ResourceTitle”和“Loan”拖到绘图窗口中,如图3.5 所示。
UML中的顺序图和协作图的区别与实际应用案例解析
UML中的顺序图和协作图的区别与实际应用案例解析UML(Unified Modeling Language)是一种用于软件系统建模的标准语言,被广泛应用于软件开发过程中。
在UML中,顺序图和协作图是两种常用的建模工具,用于描述系统中对象之间的交互关系。
本文将探讨顺序图和协作图的区别,并通过实际应用案例解析它们的使用。
顺序图是一种时序图,用于展示对象之间的交互顺序。
它通过显示对象之间的消息传递和时间顺序来描述系统的动态行为。
顺序图以垂直方向表示时间轴,从上到下按照时间顺序排列对象和消息。
每个对象用一个矩形表示,对象之间的消息通过箭头表示。
顺序图强调对象之间的交互和消息的顺序,能够清晰地展示系统中的动态行为。
协作图是一种静态图,用于描述对象之间的合作关系。
它通过展示对象之间的连接和消息传递来描述系统的结构和交互。
协作图以水平方向表示对象之间的连接关系,每个对象用一个矩形表示,对象之间的连接通过实线和虚线表示。
协作图强调对象之间的连接和合作关系,能够清晰地展示系统中的结构和交互。
为了更好地理解顺序图和协作图的区别,我们可以通过一个实际应用案例来解析它们的使用。
假设我们正在开发一个在线购物系统,其中包含用户、购物车和商品三个对象。
首先,我们可以使用顺序图来描述用户购买商品的过程。
顺序图可以展示用户选择商品、将商品添加到购物车、结算支付等交互过程。
通过顺序图,我们可以清晰地了解用户与系统之间的交互顺序和消息传递。
接下来,我们可以使用协作图来描述购物车和商品之间的合作关系。
协作图可以展示购物车和商品之间的连接关系,以及它们之间的消息传递。
通过协作图,我们可以清晰地了解购物车和商品之间的合作关系,从而更好地设计系统的结构和交互。
通过以上案例,我们可以看到顺序图和协作图在描述系统中的对象交互和合作方面有着不同的应用场景。
顺序图适用于描述对象之间的交互顺序和消息传递,而协作图适用于描述对象之间的连接关系和合作关系。
UML 序列图(顺序图)和协作图
UML图学习序列图(顺序图)和协作图分类:UML 2012-11-30 16:42 2528人阅读评论(19) 收藏举报在面向对象动态建模,用于建立行为的实体间行为交互的四种图:状态图(Stage Diagram),序列图(Sequence Diagram),协作图(Communication Diagram),活动图(Activity Diagram) ,其中,“顺序图”与“协作图”表述的是相似的消息。
序列图(Sequence Diagram)强调的消息时间顺序的交互图,描述类系统中类与类之间的交互,它将这些交互建模成消息互换,换句话说,顺序图描述了类与类之间之间相互交换以完成期望行为的消息。
顺序图的特点是清晰,一个设计很好地顺序图从左到右、从上到下可以很好地表示出系统数据的流向,为接下来的系统设计做好铺垫。
协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是一种交互图(interaction diagram),强调的是发送和接收消息的对象之间的组织结构。
一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。
对象通常是命名或匿名的类的实例,也可以代表其他事物的实例,例如协作、组件和节点。
使用协作图来说明系统的动态情况。
1、序列图(顺序图)的知识点概要:点此看大图2、协作图知识点概要:点此看大图3:顺序图(1)先从图书馆借/还书角度了解顺序图从顺序图的流程中,清晰到了解程序的过程,十分清晰明了(2)从地铁购票的活动中来看顺序图根据机房收费系统来画的部分顺序图(3):一般用户角度查询信息。
(4):操作员注册新的学生账号(5)管理员的基本系统数据的的设定4、协作图(1)结合刚才的图书馆借/还书的过程。
根据序号可以发生的先后顺序(2)从地铁购票的角度来学习协作图(3)结合机房收费系统角度画的协作图一般用户查询信息:(4)操作员注册卡(5)管理员修改基本数据5、协作图与顺序图的区别和联系协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同顺序图清楚地表示了交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系。
UML6总体设计鲁棒性分析(顺序图、协作图)、类建模(设计类图)
分析阶段顺序图-举例(续)
: Admin 1: 选择进入系统管理界面
系统
2: 提示输入用户名/密码 3: 输入用户名密码登录
4: 用户合法性验证
5: 返回显示所有课程 6: 选择添加课程 7: 提示输入新课程信息 8: 输入新课程信息提交
10: 返回显示所有课程
9: 系统验证
分析阶段顺序图-举例说明
▪ 直接对着基本事件流开始描绘交互细节 ▪ 系统内部对象不发掘,直接以系统代表。 ▪ 参与者就是用例的发起者,直接拖动到画图区最左
一列;如果该用例不是直接被参与者启动的,两种 策略:
• 做出说明,不再重复前面的用例的交互细节。 • 完整描述从参与者发起前一个用例交互到本用例结束的
全过程。
分析类图(初步类图)
UML建模技术-
交互视图
交互视图
▪ 交互视图包括顺序图和协作图,通常用作表达对象 间消息用。
▪ 在分析阶段,对用例的基本事件流做图形描述时, 可使用顺序图/协作图,此时描绘的是参与者在系统 边界处和系统交互的细节。
▪ 在设计阶段,由于要进一步发掘业务对象,使用顺 序图/协作图用于启发发现新的对象,从而更新类图。 此时描绘的是系统内部对象间的交互细节,不断启 发发现新的对象,最终识别和归纳为新的类。
部课程。
鲁棒性分析设计
▪ Robust(鲁棒性)是分析阶段初步得出业务 对象之后在总体设计阶段需要进行的工作。
设计阶段的顺序图-举例(续)
▪ 发现需要以下对象:
• 界面 • 课程 • 对于业务层的操作,也应有对象进行处理 • 参与者包括管理浏览区右点某个用例,选择“new”下的 “Sequence Diagram”,即顺序图,双击右侧出现其作图区。
UML中的协作图和顺序图的区别与实践应用
UML中的协作图和顺序图的区别与实践应用在软件开发过程中,UML(统一建模语言)是一种常用的工具,它用于描述和设计软件系统的结构和行为。
UML中有多种类型的图表,其中协作图和顺序图是两种常见的用于描述系统交互的图表。
虽然它们都可以用于描述系统的交互行为,但协作图和顺序图在表达方式、重点和实践应用上存在一些区别。
首先,协作图主要用于描述系统中的对象之间的协作关系。
它通过展示对象之间的交互和消息传递来揭示系统的结构和行为。
协作图强调对象之间的合作,通过展示对象之间的关联、消息和角色来描述系统的动态行为。
协作图通常以对象为中心,通过展示对象之间的交互来描述系统的运行过程。
与之相反,顺序图主要用于描述系统中的对象之间的时序关系。
它通过展示对象之间的消息传递顺序来揭示系统的行为和交互。
顺序图强调对象之间的时序关系,通过展示消息在对象之间的传递顺序和时序关系来描述系统的运行过程。
顺序图通常以时间为轴,通过展示对象之间的消息传递顺序来描述系统的执行流程。
在实践应用方面,协作图常用于分析和设计系统的结构和行为。
它可以帮助开发人员理解系统中对象之间的交互关系,从而提供系统设计的基础。
协作图可以用于描述系统的静态结构,例如对象之间的关联关系和角色。
同时,它也可以用于描述系统的动态行为,例如对象之间的消息传递和交互流程。
通过使用协作图,开发人员可以更好地理解系统的整体结构和行为,从而更好地进行系统设计和开发。
而顺序图则常用于描述系统的执行流程和时序关系。
它可以帮助开发人员理解系统中对象之间的消息传递顺序和时序关系,从而提供系统设计和实现的指导。
顺序图可以用于描述系统的执行流程,例如对象之间的消息传递顺序和执行顺序。
同时,它也可以用于描述系统的时序关系,例如对象之间的时序关系和时序约束。
通过使用顺序图,开发人员可以更好地理解系统的执行流程和时序关系,从而更好地进行系统设计和实现。
在实际应用中,协作图和顺序图常常结合使用。
时序图和协作图
1. 对象
❖ 时序图中的对象在概念上和它在对象图中 的定义是一致的,其图形表示也相同。
❖ 每个对象显示在单独的列里,用一个矩形 框代表一个对象,框内填写对象名和它所 属的类名,中间用一个冒号隔开。
Object1 : ClassA
2.生命线
❖ 生命线是对象标识符在垂直方向上拖出的一 条长虚线,表示时序图中的对象在一段时间 内的存在。
激活示例
激活的应用
❖ 当进行时序图建模时,所用到的消息主要 包括以下几种类型:
简单消息(Simple Message) 同步消息(Synchronous Message) 异步消息(Asynchronous Message) 反身消息(Message to Self) 返回消息(Return Message)
(1)简单消息(Simple Message)
❖ 简单消息是在同步和异步之间没有区别的 消息。
❖ 在不知道消息的类型的情况下就可以使用 简单消息。
❖ 在对系统进行时序图建模时,可以对所有 的消息都使用简单消息进行表示,然后再 根据情况确定消息的类型。
(2)同步消息(Synchronous Message)
如果对象在这个位置上,那么说明在发送 消息时,该对象就已经存在了; ❖ 如果对象是在执行的过程中创建的,那么 它的位置应该处在图的中间部分。
❖ 对象的创建有两种方法:
ObjectA 1: Create() ObjectB 2: ReturnMessage
ObjectA
ObjectB
1: Create()
: Administrator
:ManageWindow
1: UpdateBorrower()
:UpdateBorrowerDialog
UML中顺序图与协作图的对比与选择
UML中顺序图与协作图的对比与选择UML(Unified Modeling Language)是一种用于软件系统建模的标准化语言,它提供了多种图形化工具,其中顺序图和协作图是两种常用的交互图。
本文将对这两种图进行对比,并讨论在不同情况下的选择。
顺序图是一种描述对象之间交互行为的图形化工具。
它展示了对象之间的消息传递顺序,以及消息的触发和响应。
顺序图以时间为轴,清晰地展示了对象之间的交互过程。
通过顺序图,我们可以更好地理解系统中不同对象之间的协作方式。
例如,在一个订单处理系统中,顺序图可以展示顾客对象与订单对象之间的交互过程,包括顾客发起订单请求、订单对象接收请求并生成订单、顾客确认订单等。
协作图是一种描述对象之间协作关系的图形化工具。
它展示了对象之间的结构和关联关系,以及对象之间的消息传递。
协作图以对象为中心,通过箭头和标签展示了对象之间的交互过程。
与顺序图相比,协作图更加注重对象之间的结构和关联关系。
例如,在一个电子商务系统中,协作图可以展示顾客对象、订单对象和商品对象之间的协作关系,包括顾客对象发起订单请求、订单对象生成订单并关联商品对象等。
那么,在实际应用中,我们该如何选择使用顺序图还是协作图呢?首先,如果我们更关注对象之间的交互行为和消息传递顺序,那么顺序图是更好的选择。
顺序图以时间为轴,清晰地展示了对象之间的交互过程,帮助我们更好地理解系统中不同对象之间的协作方式。
例如,在一个银行系统中,我们可以使用顺序图展示客户对象与银行柜员对象之间的交互过程,包括客户发起取款请求、柜员接收请求并处理、客户确认取款等。
其次,如果我们更关注对象之间的结构和关联关系,那么协作图是更好的选择。
协作图以对象为中心,展示了对象之间的结构和关联关系,帮助我们更好地理解系统中不同对象之间的协作关系。
例如,在一个团队协作系统中,我们可以使用协作图展示团队成员对象之间的协作关系,包括成员之间的沟通、任务分配和工作协调等。
第八章 顺序图和协作图
第八章序列图和协作图本章要点⏹基础内容:序列图和协作图的激活和链⏹重点掌握:序列图和协作图中的对象、消息⏹一般了解:序列图中的分支和从属流导读⏹在标识出系统的类图之后,除了显示了实现用例的组成结构外,还需要描述这些类的对象是如何交互来实现用例功能的,即不但需要类图模型,还需要将它转化为交互图模型。
⏹交互图为基于交互的对象行为建模,是UML用于描述对象之间信息的交互过程的方法,是描述对象间协作关系的模型。
交互图指出对象如何通过协作来完成用例中捕获的业务流程。
⏹UML中的交互图以图形的形式表示方法调用的具体过程,主要有顺序图和协作图两种形式。
UML提供了一系列的图支持面向对象的分析和设计,顺序图和协作图都输描述系统动态视图的交互图。
其中顺序图描述了以时间顺序组织的对象之间的交互活动,协作图强调收发消息的对象的组织结构。
8.1 顺序图概述⏹顺序图由类角色、生命线、激活期和消息组成。
⏹顺序图用于表示一个交互,该交互是协作中各种类元角色间的一组消息交换,侧重于强调时间顺序。
顺序图捕获系统运行中对象之间有顺序的交互,强调的是消息交互的时间顺序。
⏹顺序图用于表示用例中的行为顺序。
顺序图将交互关系表示为一个二维图。
横向轴代表了在协作中各独立对象的类元角色。
纵向轴是时间轴,时间沿竖线向下延伸。
所谓交互是指在具体语境中由为实现某个目标的一组对象之间进行交互的一组消息所构成的行为。
交互——语境对象相互链接的地方就有交互(1)具有对象协作的系统、子系统语境中如:Web商务系统,客户对象、服务器对象间交互(2)操作实现语境中如:操作的参数、局部变量、全局对象相互交互完成操作的实现算法(3)类语境中如:通过交互显示类的属性是如何相互协作的交互——对象和角色⏹交互中的对象可以是具体事物⏹也可以是原型化事物⏹可以是类、构件、节点、用例的实例,也可以是抽象类、接口的间接实例UML提供的交互机制通常用于为以下两种情况进行建模:(1)控制流方面进行建模可针对一个用例、一个业务操作过程或系统过程,也可针对整个系统。
顺序图和协作图
问题: 阻止消息和超时消息属于同步消息还是异步消息?
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)
顺序图和协作图
顺序图和协作图第4章顺序图和协作图4.1 交互图概述在一个待开发的系统中,任何对象都不是孤立存在的,系统中的这些对象都是通过传递消息进行交互的。
因此在设计系统时,就免不了对交互进行缄默,并用交互图展现出来。
4.1.1 交互的定义当需要对类操作、类、构件、用例乃至整个系统的控制流进行建模时,一定离不开“交互”。
交互:一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为。
交互图:是用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档。
通常用来描述一个用例的行为,显示该用例中所涉及的对性和这些对象之间的消息传递情况在大多数情况下,消息通常是指启动一个操作或发送一个信号,以及创建或销毁一个对象。
4.1.2 UML交互图的类型顺序图:是一种强调消息时间顺序的交互图,着重描述对象按照时间顺序的消息交换,为读者提供了控制流随着时间推移的清晰的可视化轨迹。
协作图(UML 2.0中的通信图):强调的是参加交互的对象的组织,着重描述系统成分如何协同工作,为读者提供了在协作对象结构组织的语境中观察控制流的一个清晰的可视化轨迹。
顺序图和协作图从不同的角度表达了系统中的交互和系统的行为,它们可以相互转化,并且转换过程不会丢失信息。
定时图(UML 2.0中新增):采用了一种带数字刻度的时间轴来精确地描述消息的顺序,而不是像顺序图那样只是指定消息的相对顺序,而且它还允许可视化的表示每条生命线的状态变化,当需要对实时时间进行定义时,采用定时图可以很好的满足。
交互概述图(UML 2.0中新增):是交互图和活动图的混合物。
定时图和交互概述图是两种特殊的变体。
4.1.3交互图和类(图)4.2 顺序图顺序图:显示的是参与交互的对象及对象之间消息交换的顺序,用来表示用例中的行为顺序。
图显示的是汽车租赁系统中客户取车的顺序图,涉及5个对象:客户、预定请求、工作人员、工作记录和汽车。
交互作用图(顺序、协作)
创建消息:创建一个对象,箭头需要指到所建立的 对象上面。 销毁消息:销毁一个对象,对象生命线用差号来表 示销毁,表示被销毁对象的生命周期将到此终结。
obj1:Class <<c re at e>> obj2:Class
<<d e s t ro y >>
<<boundary>> : 职员管理界面
• findTitle(isbn:String):OID • 返回指定ISBN的Title对象的 OID • getTitle(oid:OID):Title • 返回Title对象 • getAvaliableBook():OID • 返回第一个可借阅的Book对 象的OID
• 类Borrower • borrowerID:String • loans:OID[ ]
(3). 简单消 息
它只表示控制如何从一个对象传递给另一个对象,而没有描述通信的任何细节。 这种类型的消息主要用于通信细节未知或者无需考虑通信细节的场合。也就是说,主 要用于不知道消息是同步还是异步的场合,但通常情况下表示异步消息此外在高层分 析中,有时候没有必要指定一个消息是同步的还是异步的。如下面的示例所示。
顺序图是显示对象之间交互的图, 这些对象是按时 间顺序排列的. 它显示参与交互的对象及对象之间消息交互的顺序.
对象/参与者 对象维
生命线 消息 时间维 控制焦点
对象的三种命名方式:
生命线是对象图标向下延伸的虚线, 表示对象生存时间.
消亡点
控制焦点(Focus of Control)又称为激活期(Activation), 用 生命线上的小矩形表示, 在这个时间段内, 对象执行相 应的操作.
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
场景描述
曹操 :刘备
:孔明
求战 请拟策略
:关羽
:张飞 孙权
请防守荆州
知识点学习(顺序图和协作图 )
7.2 通信图
•图10从订单生成订货单的通信图。
2 通信图
• 1.通信图的作用
• 通信图常用来描述业务或软件系统中,每个对象在交互发生时承担的 角色,即强调了交互发生时,每个对象承担的职责。 • 使用协作图可以显示对象相互协作时充当的角色。如果需要强调时间 和序列,最好选择顺序图建模;如果需要强调上下文相关,最好选择 协作图建模。 • 协作图用于显示对象之间如何进行交互,以实现特定用例或用例中特 定部分的行为。设计员使用协作图和顺序图确定并阐明对象的角色, 这些对象执行用例的特定事件流。这些图提供的信息主要用来确定类 的职责和接口。 • 2.通信图的组成元素
1 顺序图
对象
控制焦点 消息
•图2 顺序图
生命线
1 顺序图
• 2.对象:
• 顺序图中对象的符号和对象图中对象所用的符号一样。将对象置于顺 序图的顶部意味着在交互开始的时候对象就已经存在了,如果对象的 位置不在顶部,那么表示对象是在交互的过程中被创建的。 • 3.生命线 • 生命线是一条垂直的虚线,表示顺序图中的对象在一段时间内的存在。 每个对象的底部中心的位置都带有生命线。生命线是一个时间线,所 用的时间取决于交互持续的时间。 • 4.控制焦点 • 在对象的生命线上,包含一个矩形,表示对象处于激活状态,处于激 活状态的对象正在执行某个任务。对象在完成自己的工作后,被去激 活,对象就处于空闲状态。
1.1: findStudent(name) 1.2: findCourse(course) <<self>> 1: register(name,course) :Registrar :RegistrationManager [(!s)&c]1:studentNotFound [s&(!c)]1:courseNotFound [(!s)&(!c)]1:allNotFound [s&c]1:OK :StudentList
5.实验5---顺序图和协作图
实验5顺序图和协作图一.顺序图1.实验内容图1-1顺序图2.实验步骤2.1定义类在LogiC VieW视图下创建4个类,它们是:客户、ATM端口、钱币记录仪、分类器,如图1-2所示。
图1-2创建类2.2创建顺序图右击LogiC View,选择New→Sequence Diagram,系统自动增加了一个项目:NewDiagram0我们在此处输入:顺序图,如图1-3所示。
图1-3创建顺序图2.3往顺序图中添加对象在i刘览器窗口中,双击“顺序图”文本,系统就在模型图窗口打开“顺序图”,如图1-4所示。
图1-4打开顺序图分别将浏览器窗口中的4个类(客户、ATM端口、钱币记录仪、分类器)拖入顺序图。
当把类拖入顺序图中时,系统自动创建匿名对象。
如图1・5所示。
图1-5对象拖入顺序图给匿名对象命名步骤如下:右击匿名对象客户”图标,选择OPen SPeCifICatiOn,打开对象的规范窗口,输入姓名:邓小贫。
如图1-6所示。
图1-6给匿名对象取名点击“OK”按钮,完成对象命名。
2.4 给对象添加消息添加消息的步骤:1)在工具箱中单击ObjeCl Message 按钮,2)在“邓小贫”对象的生命线上按下鼠标左键(不要松手),拖动鼠标到对象”:ATM端口”后,松开鼠标,就建立了一条消息。
如图1-7所示。
×ι÷lMHl ►!►Mog/For H«lp , pr«ss Fl∣D∙fftult Ltt<u∙g∙: Analysis图1-7添加消息3)右击消息,打开快捷菜单,选择OPenSPeCifiCatiOn ,打开消息的规范窗口,并输 入消息名:请求接收钱币,如图,1-8所示。
图1-7消息命名@ Rational Rose - 20182236+季自成+⅛⅛4.mdl‰侬File Edit View Format Browse Report ToOk Add-Ins Window Help口空。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章顺序图和协作图4.1 交互图概述在一个待开发的系统中,任何对象都不是孤立存在的,系统中的这些对象都是通过传递消息进行交互的。
因此在设计系统时,就免不了对交互进行缄默,并用交互图展现出来。
4.1.1 交互的定义当需要对类操作、类、构件、用例乃至整个系统的控制流进行建模时,一定离不开“交互”。
交互:一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为。
交互图:是用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档。
通常用来描述一个用例的行为,显示该用例中所涉及的对性和这些对象之间的消息传递情况在大多数情况下,消息通常是指启动一个操作或发送一个信号,以及创建或销毁一个对象。
4.1.2 UML交互图的类型顺序图:是一种强调消息时间顺序的交互图,着重描述对象按照时间顺序的消息交换,为读者提供了控制流随着时间推移的清晰的可视化轨迹。
协作图(UML 2.0中的通信图):强调的是参加交互的对象的组织,着重描述系统成分如何协同工作,为读者提供了在协作对象结构组织的语境中观察控制流的一个清晰的可视化轨迹。
顺序图和协作图从不同的角度表达了系统中的交互和系统的行为,它们可以相互转化,并且转换过程不会丢失信息。
定时图(UML 2.0中新增):采用了一种带数字刻度的时间轴来精确地描述消息的顺序,而不是像顺序图那样只是指定消息的相对顺序,而且它还允许可视化的表示每条生命线的状态变化,当需要对实时时间进行定义时,采用定时图可以很好的满足。
交互概述图(UML 2.0中新增):是交互图和活动图的混合物。
定时图和交互概述图是两种特殊的变体。
4.1.3交互图和类(图)4.2 顺序图顺序图:显示的是参与交互的对象及对象之间消息交换的顺序,用来表示用例中的行为顺序。
图显示的是汽车租赁系统中客户取车的顺序图,涉及5个对象:客户、预定请求、工作人员、工作记录和汽车。
取车的动作从客户向工作人员提出取车要求并出示清单开始,工作人员检查客户的预订请求,确认后客户可以付款。
然后工作人员填写工作记录,同时登记汽车状态,最后客户取车。
可以看出在UML中,顺序图将交互关系表示为二维图。
其中,纵轴是时间轴,时间沿竖线向下延伸,按时间递增顺序列出各个对象所发出和接收的消息。
水平方向是对象维,水平方向排列的是参与交互的对象。
一般主要参与者(或人型参与者)放在最左边,次要参与者(系统参与者)放在最右边。
4.2.1顺序图的建模元素对象、生命线、消息、控制焦点图4.2 从订单生成送货单对一个电子商务网站进行建模,Order类中有一个dipatch()成员方法,其作用是根据供应商户的不同将一个订单分拆到多哥送货单中。
1、对象(角色)上图中最顶上一排将对象名称包含起来的矩形框。
对象名下有下划线。
将对象置于顺序图的顶部以为着在交互开始的时候对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的。
在顺序图中,参与交互的对象既可以是具体的事物,又可以是原型化的事物。
作为具体的事物,一个对象代表现实世界中的某个东西。
例如,aOrder作为类Order的一个实例,可以代表一个特定的订单;而如果作为一个原型化的事件,则aOrder 可以代表类Order 的任何一个实例。
顺序图中对象有3种命名方式,如下图通常,顺序图中更常用的对象是表示扮演特殊角色的原型化的事物,甚至可以采用匿名对象表示。
图4.2中的前两个的是命名对象,分别是名为DispatchForm 的Form 实例和名为aOrder 的Order 实例,后面三个是匿名对象,分别表示OrderItem 、Product 和DeliverOrder 类的实例。
2、 生命线与控制焦点(1)生命线:每个对象都有自己的生命线,对象生命线是一条垂直的虚线,用来表示一个对象在一段时间内存在。
一般顺序图中出现的大多数对象是存在于整个交互过程中的,即对象置于顺序图的顶部,其生命线从图的顶部画到图的底部。
但有一些例外情况:①对象可以在交互过程中创建,它们的生命线会从接到新建对象(构造函数)的消息时开始。
②对象也可以在交互过程中销毁,它们的生命线在接到析构函数(或标记为destroy )的消息时结束。
(2)控制焦点:生命线上的长条形矩形称为“控制焦点”,它表示一个对象执行一个动作所经历的时间段,顶部表示动作的开始,矩形底部表示动作的结束。
控制焦点可以嵌套,嵌套的控制焦点可以更精确的说明消息的开始和结束位置,如图激活期:表示对象执行一个动作的期间,即对象激活的时间段,与控制焦点同义。
3、 消息显示对象名和类名 只显示类名(匿名对象) 只显示对象名 (不关心对象属于什么类)图:顺序图中对象的命名方式消息:用来描述对象之间所进行的通信的,该信息带有对将要发生的活动的期望。
当传送一个消息时,它所引起的动用是一个通过对计算过程的抽象而得到的可执行语句消息分为五种:调用、返回、异步(发送)⑴调用消息(call):表示调用某个对象的一个操作(通常格式为对象名.成员方法)。
可以是对象间的调用,也可以是对对象本身的调用(局部调用)。
UML符号如图所示,并在符号上标明顺序编号、消息名称、参数。
例:在图4.2 从订单生成送货单中,从dispatchForm到aOrder对象间的1:dispatch( )就说明了在dispatchForm中将调用Order类(aOrder对象所属于的类)的dispatch( )方法,参数为空。
调用消息必有一个配对的返回消息,为了图的清晰简洁,一般不画出来。
⑵返回消息(return)①表示从过程调用返回,返回消息是隐含的,不画出②对非过程调用,返回表示被调用的对象向调用者返回一个值。
例:在图 4.2 从订单生成送货单中显示了3个返回消息。
从Product类的实例返回给OrderItem类实例的PeddeleryId (供应商户ID)就是对3.getPeddeleryId()消息调用的回应。
而当aOrder完成了dispatch( )之后,将向dispatchForm返回summary信息。
⑶异步消息(发送消息send):发送者通过消息把信号传递给接受者,然后继续自己的活动,不等待接收者返回消息或控制。
比较:调用是同步机制,就是说对象A调用对象B时,A发送完消息后会等待B执行完所调用的方法之后在继续执行;而异步消息是对象A给对象B发送了一个信号,那么A在发送完信号后,就会继续执行,不会等待。
例子:Windows中“点击鼠标左键”就是一个典型的信号。
当Windows进入资源不足状态时,你通过点击鼠标左键来关闭一个窗口,也许不会马上响应,而你仍然可以继续操作鼠标,等过一会,可能这个窗口就关闭了。
在UML中,消息用箭头表示,箭头的类型表示了消息的类型。
常用符号:表4-1 Rose2003中消息的类型符号⑷[predecessor][guard-condition][sequence-expression][return-value:=]message-name([argument-list])表4-2 消息的语法格式4、对象的创建和销毁创建对象(构造函数实现)意味着该对象生命线的开始。
如果对象位于时序图的顶部,说明在交互开始之前该对象已经存在了。
如果对象是在交互的过程中创建的,那么它应当位于图的中间部分。
对象在创建消息发生之后才能存在,对象的生命线也是在创建消息之后才存在的创建对象的两种表示方法:销毁对象(析构函数实现)在目标对象的生命线重终点放一个X(大叉),该点通常是对删除或取消消息的回应。
4.2.2顺序编号(消息编号)整个消息的传递过程形成了一个完整的序列,因此通过在每个消息的前面加上一个用冒号隔开的顺序号来表示其顺序(不是标准的UML编号方法)。
除了无层次的顺序编号之外,还可以采用嵌套方案(标准的UML编号方法)。
消息的编号可以有两种:一种是无层次编号,它简单直观;另一种是嵌套的编号,它更易于表示消息的包含或说嵌套关系。
如在消息1中,1.1是嵌套在消息1中的第一个消息,它在消息1.2之前,消息1.2是嵌套在消息1中的第二个消息,依次类推。
但不管使用什么样的方法来标识,都必须确保消息标号的唯一性。
无层次编号嵌套编号4.2.3 循环与分支表示循环行为和条件行为不是顺序图的长项,尤其是在UML1.X版本中表示这种语义很困难,如果需要表示这种控制结构,采用活动图会容易的多。
不过在UML2.0中引入了交互片段(Interaction Frame),能够有效解决上述问题。
图4.2 从订单生成送货单中利用了交互片段,将业务逻辑表述的更加清晰。
交互片段中包含了一部分的顺序图,而且还可以将交互片段中的顺序图分成几个区域。
每个交互片段都有一个操作符,而每个区域都有一个监护条件,其表示法如下图所示:下面我们主要介绍一下最常用的如何使用交互片段表示循环和分支。
(1)分支。
当顺序图中的交互是否执行取决于某个特定条件的时候,就需要用到分支。
可以表示分支的操作符有两个:支持多条件的Alt 和支持单条件的opt.在图:交互片段表示法中使用的是一个alt 的使用实例,它说明如果PeddeleryId (供应商户ID)不存在,则执行虚线(区域分割线)上面的交互;如果PeddeleryId (供应商户ID)存在则执行虚线下面的交互,也就是Else 的交互。
如果要表示多个条件分支,则可以用“区域分割线”分解出多个区域,并为每个区域设置一个监护条件。
在图4.2的例子中,实际上要表示的逻辑是“如果PeddeleryId 不存在就先创建它,然后添加;否则直接添加,因此也可以使用单条件的opt 操作符表示。
(2)循环。
在交互片段中表示循环的操作符是Loop ,它说明该片段可以执行多次。
而具体的次数由循环次数范围和监护条件表达式来说明。
在我们这个例中,没有通过循环次数范围来说明循环的次数,而只是采用了监护条件。
它的意思是对每一个OrderItem 都执行一遍该业务逻辑。
当然,也可以显示的指出循环次数,如:Loop(1,n):表示for i=1;i<=n;i++.Loop(5):表示执行5次图:交互片段表示法(3)我们说了交互片段是UML 2.0中新增加的特性,因此在采用UML1.x的建模工具时无法完成上述模型,这时只能借助UML中的循环标记和监护条件(警戒条件)来表示。
循环标记是在消息名前附带一个“*”号,这些标记在UML 2.0的顺序图中不再采用,但在UML 2.0的协作图中仍然保留。
4.3 建立顺序图的步骤①设置交互的语境,不管它是系统、子系统、操作、类、还是用例或协作脚本。
②通过识别对象在交互中扮演的角色,设置交互的场景。