顺序图和协作图
- 格式:doc
- 大小:295.00 KB
- 文档页数:13
实验五—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(Unified Modeling Language)是一种用于软件系统建模的标准语言,被广泛应用于软件开发过程中。
在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、协作图与顺序图的区别和联系协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同顺序图清楚地表示了交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系。
UML中的协作图和顺序图的区别与实践应用在软件开发过程中,UML(统一建模语言)是一种常用的工具,它用于描述和设计软件系统的结构和行为。
UML中有多种类型的图表,其中协作图和顺序图是两种常见的用于描述系统交互的图表。
虽然它们都可以用于描述系统的交互行为,但协作图和顺序图在表达方式、重点和实践应用上存在一些区别。
首先,协作图主要用于描述系统中的对象之间的协作关系。
它通过展示对象之间的交互和消息传递来揭示系统的结构和行为。
协作图强调对象之间的合作,通过展示对象之间的关联、消息和角色来描述系统的动态行为。
协作图通常以对象为中心,通过展示对象之间的交互来描述系统的运行过程。
与之相反,顺序图主要用于描述系统中的对象之间的时序关系。
它通过展示对象之间的消息传递顺序来揭示系统的行为和交互。
顺序图强调对象之间的时序关系,通过展示消息在对象之间的传递顺序和时序关系来描述系统的运行过程。
顺序图通常以时间为轴,通过展示对象之间的消息传递顺序来描述系统的执行流程。
在实践应用方面,协作图常用于分析和设计系统的结构和行为。
它可以帮助开发人员理解系统中对象之间的交互关系,从而提供系统设计的基础。
协作图可以用于描述系统的静态结构,例如对象之间的关联关系和角色。
同时,它也可以用于描述系统的动态行为,例如对象之间的消息传递和交互流程。
通过使用协作图,开发人员可以更好地理解系统的整体结构和行为,从而更好地进行系统设计和开发。
而顺序图则常用于描述系统的执行流程和时序关系。
它可以帮助开发人员理解系统中对象之间的消息传递顺序和时序关系,从而提供系统设计和实现的指导。
顺序图可以用于描述系统的执行流程,例如对象之间的消息传递顺序和执行顺序。
同时,它也可以用于描述系统的时序关系,例如对象之间的时序关系和时序约束。
通过使用顺序图,开发人员可以更好地理解系统的执行流程和时序关系,从而更好地进行系统设计和实现。
在实际应用中,协作图和顺序图常常结合使用。
UML中顺序图与协作图的对比与选择UML(Unified Modeling Language)是一种用于软件系统建模的标准化语言,它提供了多种图形化工具,其中顺序图和协作图是两种常用的交互图。
本文将对这两种图进行对比,并讨论在不同情况下的选择。
顺序图是一种描述对象之间交互行为的图形化工具。
它展示了对象之间的消息传递顺序,以及消息的触发和响应。
顺序图以时间为轴,清晰地展示了对象之间的交互过程。
通过顺序图,我们可以更好地理解系统中不同对象之间的协作方式。
例如,在一个订单处理系统中,顺序图可以展示顾客对象与订单对象之间的交互过程,包括顾客发起订单请求、订单对象接收请求并生成订单、顾客确认订单等。
协作图是一种描述对象之间协作关系的图形化工具。
它展示了对象之间的结构和关联关系,以及对象之间的消息传递。
协作图以对象为中心,通过箭头和标签展示了对象之间的交互过程。
与顺序图相比,协作图更加注重对象之间的结构和关联关系。
例如,在一个电子商务系统中,协作图可以展示顾客对象、订单对象和商品对象之间的协作关系,包括顾客对象发起订单请求、订单对象生成订单并关联商品对象等。
那么,在实际应用中,我们该如何选择使用顺序图还是协作图呢?首先,如果我们更关注对象之间的交互行为和消息传递顺序,那么顺序图是更好的选择。
顺序图以时间为轴,清晰地展示了对象之间的交互过程,帮助我们更好地理解系统中不同对象之间的协作方式。
例如,在一个银行系统中,我们可以使用顺序图展示客户对象与银行柜员对象之间的交互过程,包括客户发起取款请求、柜员接收请求并处理、客户确认取款等。
其次,如果我们更关注对象之间的结构和关联关系,那么协作图是更好的选择。
协作图以对象为中心,展示了对象之间的结构和关联关系,帮助我们更好地理解系统中不同对象之间的协作关系。
例如,在一个团队协作系统中,我们可以使用协作图展示团队成员对象之间的协作关系,包括成员之间的沟通、任务分配和工作协调等。
第八章序列图和协作图本章要点⏹基础内容:序列图和协作图的激活和链⏹重点掌握:序列图和协作图中的对象、消息⏹一般了解:序列图中的分支和从属流导读⏹在标识出系统的类图之后,除了显示了实现用例的组成结构外,还需要描述这些类的对象是如何交互来实现用例功能的,即不但需要类图模型,还需要将它转化为交互图模型。
⏹交互图为基于交互的对象行为建模,是UML用于描述对象之间信息的交互过程的方法,是描述对象间协作关系的模型。
交互图指出对象如何通过协作来完成用例中捕获的业务流程。
⏹UML中的交互图以图形的形式表示方法调用的具体过程,主要有顺序图和协作图两种形式。
UML提供了一系列的图支持面向对象的分析和设计,顺序图和协作图都输描述系统动态视图的交互图。
其中顺序图描述了以时间顺序组织的对象之间的交互活动,协作图强调收发消息的对象的组织结构。
8.1 顺序图概述⏹顺序图由类角色、生命线、激活期和消息组成。
⏹顺序图用于表示一个交互,该交互是协作中各种类元角色间的一组消息交换,侧重于强调时间顺序。
顺序图捕获系统运行中对象之间有顺序的交互,强调的是消息交互的时间顺序。
⏹顺序图用于表示用例中的行为顺序。
顺序图将交互关系表示为一个二维图。
横向轴代表了在协作中各独立对象的类元角色。
纵向轴是时间轴,时间沿竖线向下延伸。
所谓交互是指在具体语境中由为实现某个目标的一组对象之间进行交互的一组消息所构成的行为。
交互——语境对象相互链接的地方就有交互(1)具有对象协作的系统、子系统语境中如:Web商务系统,客户对象、服务器对象间交互(2)操作实现语境中如:操作的参数、局部变量、全局对象相互交互完成操作的实现算法(3)类语境中如:通过交互显示类的属性是如何相互协作的交互——对象和角色⏹交互中的对象可以是具体事物⏹也可以是原型化事物⏹可以是类、构件、节点、用例的实例,也可以是抽象类、接口的间接实例UML提供的交互机制通常用于为以下两种情况进行建模:(1)控制流方面进行建模可针对一个用例、一个业务操作过程或系统过程,也可针对整个系统。
第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 建立顺序图的步骤①设置交互的语境,不管它是系统、子系统、操作、类、还是用例或协作脚本。
②通过识别对象在交互中扮演的角色,设置交互的场景。