资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第十章 交互视图,协作图(,Collaboration Diagram,),任课老师:黄武,提纲,协作图概述,协作图内容,协作图和顺序图之间的关系,协作图建模技术,UML,语言协作图图标,1,协作图概述,协作图(,Collaboration diagram,),是一种交互图,是动态视图的另一种表现形式,强调的是发送和接收消息的对象之间的组织结构,协作图可以被视为对象图的扩展,它除了展现出对象之间的关联外,还显示了一系列对象之间的消息传递,协作图和顺序图都是交互视图,他们是表达同一信息的两种方式,1.1,对象图和协作图,对象图表示特例,:Back,a1:Account,a2:Account,:Back,/,Debtor:Account,/,Creditor:Account,Withdraw(50),Deposit(50),Withdraw,Deposit,协作图表示对象交互,1.1,协作图的组成,协作图强调参与一个交互的对象的组织,它由以下基本元素构成:,活动者,(,Actor,),,对象,(,Object,),,连接,(,Link,)和,消息,(,Message,),协作图和顺序图的组成非常相似,它们之间可以相互转换,顺序图由哪些基本元素组成?,1.2,协作图的表示,在,UML,中,,连接,使用实线表示,消息,由标记在连接上方的带有标记的箭头表示,连接实线附近的,箭头线,表示对象之间传递的消息,指向接收消息的对象;而消息名称,参数和序号标在箭头上方,:,对象,1,:,对象,2,1. Message (parameters),2,协作图的内容,协作(,Collaboration,),类元角色(,Classifier role,),交互(,Interaction,),关联角色(,Association roles,),多对象(,Multi - Object,),返回结果(,Return results,),同步(,Synchronous,),2.1,协作,(,Collaboration,),协作,(,Collaboration,),定义了一组对象,它们按照支持给定交互的方式相互联系,协作通常使用一个对象图定义,该对象图显示特定的一组连接对象,然后通过在这个对象图中增加消息来表示交互,a1:Account,:Back,a2:Account,Withdraw(50),Deposit(50),两个银行帐户之间的转账,2.2,类元角色,(,Classifier role,),直接使用,对象图,+,消息,来表示,协作图,有些缺陷,就银行系统账户转账的例子而言:,a1,和,a2,仅表示一个特例,对象图仅能表示固定数据的对象和他们之间的连接,一些操作在不同的场合可能会展示不同的可能,比如根据条件进行分支,为了达到所需的一般性,,UML,中的协作通常不是显示对象,而是显示这些,对象的角色,2.2.1,类元角色定义,对象在交互图中可以扮演的角色被称为,类元角色(,classifier role,),。类元角色具有一个名字和一个基类(,base class,),比如银行转账例子,我们用借方代替一个账户,贷方表示另外一个账户,/,Creditor:Account,:Back,/,Debtor:Account,Withdraw,Deposit,2.2.2,类元角色说明,类元角色,以斜杠开始,然后是角色名,然后是冒号,最后是基类,角色的名字下面不加下划线,表示类元角色不是实例,而是更一般的概念,在交互图中,充当特定角色的对象必须是该角色的基类的实例,说明类元角色的特性的唯一方法是命名一个基类,UML,中,并不总是清楚地区分对象和类元角色,2.3,交互,(,Interaction,),交互(,Interaction,),是协作中的一组消息集合,这些消息被类元角色通过关联角色交换,一个协作图可以包含一个或多个交互,每个交互描述了一系列消息,交互中的对象为了达到目的而交换这些消息,2.4,关联角色(,Association role,),关联角色(,Association role,),是对象之间关联的抽象。协作中的类元角色通过关联角色进行连接,关联角色很少用角色名标注,对象能够连接的一种方式是,在它们的类之间存在一个定义的关联,该关联被称为这些关联角色的,基关联(,base association,),Account,Bank,IsHeldAt,Balance ( ) :float,Deposit (,amt:float,),Withdraw (,amt:float,),*,1,基关联,2.4.1,关联角色的构造型,两个类之间的关联暗示了这两个类的实例可以链接,并且可以在它们之间发送消息,UML,区分下面一些一个对象访问另一个对象的不同方式,用这种方式访问另一个对象就好像能够向它发送消息一样,一个对象可以被作为消息的,参数(,parameter,),传递给另一个对象。在编程语言中通过传递该对象的引用实现,2.4.1,关联角色对象间的访问方式,操作的实现可以创建任何类的,局部实例(,local,),,然后在操作执行期间向这些对象发送消息,如果存在任何,全局变量(,global,),,一个对象可以向保存在这样的变量中的对象发送消息,对象永远可以向,自己(,self,),发送消息,即使没有定义明确的“到自己的链接”,2.4.2,关联角色构造型,关联角色构造型,表明类元角色之间的链接方式,包括:,参数,(,parameter,),局部,(,local,),,全局,(,global,),,自己,(,self,)以及,关联,(,association,),,association,表明关联实例,这是默认值,:Bank,makeStatement (a),带构造型的关联角色,:Statement,a:Account,balance(),parameter,银行结算的协作图,2.5,多对象(,multi-object,),说明与类元角色相关的重数信息的另一种表达方式是使用,多对象(,multi-object,),多对象不是表示一个角色可以有很多对象充当,而是代表该多对象的基类型的多个对象的集聚(,collection,),在技术上,一个多对象表示的是一个单对象,即另外某种对象的聚集。其结果是,多对象是在一个集合上执行某操作的这些消息的一个合适目标,2.5.1,多对象的表示,多对象采用下面的方式表达,:,老师,*all 1:,交作业(),:,学生,查找指定的订单行,:Order,*1: line:=,findLine(n,),Line:OrderLine,new,Local,:,OrderLine,2.6,返回结果(,Return results,),消息可能是要求某个对象进行计算并返回结果的值。,返回结果表示为:,returnValue,:= Operate (parameters),赋值符号右边的部分被称为,消息构型,:,顾客,1:,totalPrice,:= compute (a, b),:,计算器,一个包含返回值表示法的协作图,2.7,同步,(,Synchronous,),有时一个对象只能等到其他对象发送了消息之后才能发送消息,这叫做,同步,:,高级市场经理,协作图的消息同步,:,策划部经理,:,销售主管,:,销售员,:,顾客,:,对外事务专员,:,报纸,1:,制定促销计划,(),2:,分配计划,(),3:,卖产品,(),4:,希望买产品,(),3/,登广告,(),3,协作图与顺序图的关系,协作图与顺序图表达的是同一种信息,它们之间可以相互转换,它们都是表达各对象之间的交互关系,但是侧重点不一样:顺序图强调的是交互的时间顺序,协作图强调的是交互的语境与参与交互的对象的整体组织,3.1,协作图与顺序图的关系示例,库存控制系统中的订单类图,:Order,CatalogueEntry,:,OrderLine,quantity: Integer,cost: Float,1,*,*,1,3.1,协作图与顺序图的关系示例,网上定购系统的顺序图,: Order,c:,CatalogueEntry,:,OrderLine,/Client,Add(n, c),OrderLine(n, c),GetCost,(),Return cost,3.1,协作图与顺序图的关系示例,网上定购系统的协作图,: Order,c:,CatalogueEntry,:,OrderLine,1.1.1: cost:=getCost(n, c),1.1:,OrderLine,(n, c),new,/Client,1: add (n, c),3.2,协作图的序号编制,消息的层次编号方式,1,1.1,2,2.1,2.1.1,2.1.2,2.2,2.2.1,1.2,4,协作图建模技术,设置交互的语境,通过识别对象在交互图中所扮演的角色,开始绘制协作图,把这些对象作为图的顶点放在协作图中,在识别了协作图的对象后,为每个对象设置初始值,根据对象间的关系开始确定对象间的链接,4,协作图建模技术,从引起交互的消息开始,按消息的顺序把随后的消息附到适当的链接上,以描述对象间的消息传递,如果需要说明时间或空间约束,可以用适当的时间和空间约束来修饰每个消息,在建模中,如果想要更详细的描述这个控制流,可以为交互过程中的每个消息都附上前置和后置条件,5,UML,语言协作图图标,名称,描述,表示法,单对,象,表示协作图中单个对象,多对,象,表示协作图中的一个对象集合,关联,表示对象间的各种关系,组成关联,表示类的对象之间的关系是拥有与属于关系,聚集关联,表示类的对象之间的关系是整体和局部的关系,Obj:Class,Obj:Class,6.,作业,名词解释,协作图(,Collaboration diagram,),类元角色(,Classifier role,),协作(,Collaboration,),交互(,Interaction,),简答题,简述时序图和协作图之间的关系,作业,作图题,根据银行结算的协作图画出其顺序图,:Bank,makeStatement (a),:Statement,a:Account,balance(),parameter,银行结算协作图,
展开阅读全文