1第10讲协作图(通信图)(collaborationdiagram)UML协作图及建模·定义协作图·为什么要建协作图·了解协作图的标记组件·学习不同的消息类型·深入研究消息·学习如何建模协作图【学习目标】类图描述了系统中包含的类,类提供的功能,以及类之间的关联,但是没有告诉我们类实例(对象)之间是如何通信的。这就是使用协作图的目的。一、定义协作图协作图描述对象之间的关联及其它们彼此之间的消息通信。要想使由类构成的系统具有功能,这些类的实例(对象)需要彼此通信和交互。换句话说,它们需要协作。二、协作图的标记符协作图描述对象之间的关联结构以及它们之间的交互,以便展示用例的功能行为,其UML标记如下图所示。活动图(从用户的角度描述用例)用例顺序图(用对象间的交互描述用例)用例图、活动图、顺序图之间的关系用例顺序图(用对象间的交互描述用例)协作图(用对象间的交互描述用例)共同点:二者都是用对象间的交互来描述用例的第一节顺序图与协作图之间的关系共同点:顺序图与协作图均显示了对象间的交互不同点:顺序图强调交互的时间次序协作图强调交互的空间结构交互图顺序图协作图孔明向哪些对象发送了消息?又接收了哪些对象发送的消息?顺序图按照时间顺序布图,而协作图按照空间结构布图协作图与顺序图在语义上是等价的,二者可以相互转换,而不会丢失信息。第二节协作图的构成•对象•链接•消息一、对象由于协作图要建模系统的交互,因此它必须处理类的实例。由于类在运行时不做任何工作,而是由它们的实例形式(对象)完成所有工作,因此,我们现在主要关心对象之间的交互。在协作图中可以使用3种标记类型的对象,如下图所示。在协作图中还可以使用类角色。类角色不带下划线,它有3种方法可以用来指定类角色,如下图所示。除了对象之外,在协作图中还可以看到对象角色。有4种方式来标识对象角色,如下图所示。二、链接1、链接的概念链接用来在协作图中关联对象,链接的目的是让消息在不同系统对象之间传递。2、链接的符号表示链接以连接两个对象的单一线条表示三、消息1、消息的概念消息是协作图中对象与对象之间通信的方式2、消息的类型与符号表示AB1:nameAB1:nameAB1:nameC简单消息同步消息协作图中使用实心箭头表示消息是同步的,它表示前一个消息处理必须完成后才可进入下一个消息处理。异步消息反身消息第三节顺序图与协作图的转换顺序图和协作图在语义上是等价的,所以顺序图和协作图可以彼此转换而不会损失信息。Rose中按F5键练习:比较顺序图与协作图在这个练习中,将通过对ATM机取款用例的行为描述,比较顺序图与协作图。例如,客户Joe从ATM机提取20美金的场景。练习:阅读一个协作图练习步骤:1)确定对象。2)确定事件的顺序。3)概括协作图的任务。五、学习如何建模协作图建模协作图有3个基本的步骤:1)确定属于协作图的元素。2)建模这些元素之间的结构关系。3)建模实例层的协作图。建模分数记录系统的协作图。具体用例是Teacher使用Website登录并且查看学生的分数。1.确定协作图的元素首先,确定协作图中将会包含的元素或者类。从已经描述的用例中可以确定需要Teacher、Student和Grade类,其他类是否需要不太清楚。为了提供用例要求的功能,我们需要更多的类。Teacher类如何与Student类交互?Student类从哪里获取其数据?Teacher类如何登录系统?通过这些问题和其他问题,我们就会认识到需要更多的类才能完成目标。对于分数记录系统,我们需要一个Website类来提供进行交互的场所。还需要一个Database类来提供为学生检索信息的功能。最后,还需要一个Security类提供让Teacher登录系统的手段,如下图所示。分数记录系统中的类2.建模类之间关系下一步就是确定这些类之间的关系。在这一步中,着手建模早期阶段的协作图,在类角色之间添加链接和关联角色,如下图所示。3.建模实例层协作图最后一步就是在实例层建模协作图。这意味着需要把类角色修改为对象实例,并且指定执行用例的消息序列。这一步需要用到描述对象之间链接的消息标记符,包括控制点、迭代、创建实例,以及特定消息类型的规范。练习:建模储户在ATM机上存钱操作的协作图。1、确定系统中的类储户读卡机帐户ATM屏幕存钱机2、确定类之间关系储户ATM屏幕帐户存钱机读卡机3、对象实例之间协作关系:储户:ATM屏幕:读卡机:存钱机:帐户2:读卡13:验钱数14:帐户加钱1:插入卡5:提示输入PIN8:提示选择事务10:提示金额6:输入PIN9:选择存钱事务11:输入金额7:验证PIN4:打开帐户16:退卡3:屏幕初始化15:打印收条12:接收钱第四节协作图的Rose建模一、新建协作图方法1:方法2:二、重命名协作图并双击打开对象链接反身链接消息反向消息三、添加对象方法1:a.将事先创建的类从浏览器拖到协作图中b.双击对象,在弹出的窗口中设置对象的名称方法2:a.通过工具栏的对象按纽在协作图中添加一个对象b.双击对象,在弹出的窗口中设置对象名和类四、添加链接用工具栏中的链接按纽进行连接五、添加消息方法1:a.用工具栏上的消息按纽点击链接线:techer:stub.双击消息,在弹出的窗口中设置消息的名称:techer:stu方法2:a.双击链接线,弹出如下窗口b.切换到messages页面在空白处右击,选择:techer:stu1:opname2:opname2六、设置消息的类型:techer:stu1:opname2:opname2双击消息,在弹出的对话框选择”detail”选项卡同步消息异步消息七、顺序图与协作图的相互转换TheEnd