第5章交互图及其应用《RationalRose2003基础教程》配套电子教案内容基本概念顺序图协作图顺序图和协作图共有的元素对象规范与应用消息规范与应用消息编号协作图特有的要素——链顺序图所特有的元素——控制焦点顺序图与协作图之间的转换引言交互图可以用于对一个用例的事件流程进行建模,也可以单独使用,用于可视化、详述、构造和文档化一个特定对象群体的动态方面。交互图显示一个交互,由一组对象和它们之间的关系构成,其中包括:需要什么对象、对象相互发送什么消息、什么角色启动消息以及消息按什么顺序发送。1.1交互图–分类•交互图分为两种:顺序图和协作图–顺序图强调消息发送的时间顺序–协作图则强调接收和发送消息的对象的组织结构•顺序图和协作图语义等价–顺序图和协作图在语义上是等价的,共享相同的基本模型–两个图都可以表示另一个图所不能表示的某些东西–顺序图和协作图可以实现两者之间的等价转换,而不丢失任何信息1基本概念1基本概念1.2对象–对象是类的实例,具有特定的属性和操作。在交互图中,属性展示了对象的信息和状态,操作展示了对象的行为和功能。1基本概念1.3消息–消息是从一个对象到另一个或者几个其他对象的信息传递,简单地说,消息就是对象与对象、参与者与参与者,或者对象与参与者之间的某种通信方式。–消息可以是一个信号或一次操作调用,收到消息即为事件。可以有两种消息,一种是从发送者向接收者发送信号,另一种是由调用者调用接收者的操作–对象之间的协作通过相互发送消息实现。2顺序图顺序图是描述消息时间顺序的交互图。在图形上,顺序图是一张表,其中显示的对象沿横轴排列,从左到右分布在图的顶部;而消息则沿纵轴按时间顺序排序。创建顺序图时,以能够使图尽量简洁为依据布局。2顺序图2.1顺序图中的要素–顺序图包含的内容•1)对象•2)对象生命线•3)消息•4)控制焦点–对象、对象生命线和控制焦点•表示方法–对象向下方垂直伸展的虚线称为该对象的生命线,表示该对象存在的时间长度–大“X”标记表明生命的结束–在生命线上的窄矩形条称为控制焦点,控制焦点表示该对象正在执行某个操作。窄矩形的长度表示操作的持续时间。2顺序图2.1顺序图中的要素–消息的表示方法•用消息线(消息图标)表示。一个对象到另一个对象的消息用跨越对象生命线的一条消息线表示出来,包括反身消息。•三种表示消息的方法–消息线本身–消息线加消息编号–消息线加消息编号加消息名2顺序图2.1顺序图中的要素–消息的分类•UML的消息分为:–简单(simple)–同步(synchronous)–异步(asynchronous)•Rose的消息分类–7种类型,见消息规范2顺序图2.2创建顺序图–创建方法•单击BrowseInteractionDiagram,弹出SelectInteractionDiagram对话框;•在对话框左边选择预建立顺序图的包,单击OK。弹出NewInteractionDiagram对话框;•在Title字段输入新框图的名字,单击diagramtype中的Sequence,单击OK;2顺序图2.3在顺序图中添加脚本–目的•对消息增加说明•移动顺序图中的消息时,相应的脚本也将随之移动到新的位置•要避免在框图中放入太多的逻辑条件,以保持框图的简洁性–添加方法•选择工具箱中的文本图标;•单击框图中要放入脚本的位置,通常将脚本放在框图的左边;•在文本框中键入脚本文本;•选中脚本文本框,按下shift键后选中脚本所描述的消息;•选择EditAttachScript。–撤销方法•选择脚本和消息中的任意一项;•选择EditDetachScript。2顺序图2.4顺序图的删除–方法步骤•右键单击浏览器中的顺序框图名;•在快捷菜单中选择“Delete”。2顺序图2.5顺序图工具箱–12种常见工具按钮–可以定制3协作图协作图强调发送和接受消息的对象之间的结构组织的交互图,显示对象、对象之间的链接以及对象之间的消息,还可以显示当前模型中的简单类实例和类实体实例。3协作图3.1协作图包含的元素–对象–链–消息3协作图3.2协作图的创建和删除–创建一个新协作图的步骤如下:•1)单击BrowseInteractionDiagram。弹出SelectInteractionDiagram对话框;•2)在对话框左边选择预建立协作图的包,单击OK。弹出NewInteractionDiagram对话框;•3)在Title字段输入新框图的名字,单击diagramtype中的Collaboration,单击OK按钮。–删除一个协作图的步骤如下:•1)右键单击浏览器中的协作框图名;•2)在快捷菜单中选择“Delete”。3协作图3.4协作图工具箱–13种常见工具–可以定制4顺序图和协作图共有的元素4.1对象–表示方法•Object指明对象,Class定义Object的类型•如果对象已经映射到类,用户便可以在Rose中选择性的显示对象名、类名•可以用一个多实例图标表示类的多个实例4顺序图和协作图共有的元素4.2消息–1)将消息加进顺序图•单击工具箱中的按钮;•将鼠标从发送消息的对象或参与者的生命线拖动到接受消息的对象或参与者的生命线;•输入消息文本。4顺序图和协作图共有的元素4.2消息–2)将反身消息加进顺序图•单击工具箱中的按钮;•单击收发消息的对象生命线;•输入消息名。4顺序图和协作图共有的元素4.2消息–3)将消息加进协作图•单击工具箱中的按钮;•单击框图中对象间的链接;•输入消息名。–4)删除消息•选择要删除的消息;•选择EdditDeletefromModel或按Ctrl+D。•注意:在协作图中消息删除后,链接仍然存在于模型中4顺序图和协作图共有的元素4.3消息编号–Rose中默认顺序图中不显示消息编号,协作图显示消息编号。顺序图中,消息根据对象生命线从上往下从1开始进行编号;协作图中,消息根据建立的顺序从1开始进行编号。删除消息时,Rose自动将其余消息重新编号。4顺序图和协作图共有的元素4.3消息编号–打开或关闭消息编号:•选择ToolsOptions;•选择Diagram标签;•复选或取消CollaborationNumbering或者SequenceNumbering。4顺序图和协作图共有的元素4.4为消息分配操作–要给消息分配操作:•双击框图中的消息图标;•从弹出的列表中选择一个操作。或者单击newoperation定义一个新操作。–改变消息指定的操作:•双击框图中的消息;•在消息规范窗口“Name”字段列表框中选择新的操作名。5对象规范与应用5.1对象规范–1)映射类(Class)•在Class下拉列表框中选择类名;或者,•将浏览器中的类拖动到框图中的对象上。–2)对象持续性(Persistence)•Persistent:对象保存到数据库或者其他形式的永久存储体中•Static:对象保存在内存中直到程序中止•Transient:对象只在短时间内保存在内存中–3)多实例(Multipleinstances)•选中该复选框之后,协作图中的对象图标将显示为多实例图标。但在顺序图中,对象图标仍然是单个对象的图标。6消息规范与应用6.1消息规范–1)General标签•Name:消息名•Documentation:对消息的附加说明6消息规范与应用6.1消息规范–2)Detail标签•消息同步类型(Synchronization)选项Rose图标含义Simply默认值。Synchronous同步。客户(发送消息的对象)发出消息后,等待供应者(即消息接收者,或操作提供者)响应消息。客户等供应者执行完操作之后才能继续其本身的进程,在执行操作的这段时间内,客户一直处于等待状态,直到它收到从操作提供者那里返回的消息。Balking阻止。客户只能在操作提供者能立即接收消息的情况下发送消息。如果操作提供者没有准备好接收消息,则客户将放弃该消息。Timeout超时。客户发出消息并指定等待时间,如果供应者不能在指定时间内处理消息,则客户将放弃该消息。Asynchronous异步。客户发出消息后,不等待消息是否接收,无需等待供应者的应答,可以直接继续自身的操作。ProcedureCall过程调用。客户发出消息,等待处理消息的整个嵌套顺序完成之后才能继续。Return返回。从过程调用返回。返回箭头可以省略,因为这种消息隐式地表示一个活动的结束。6消息规范与应用6.1消息规范–1)General标签•Name:消息名•Documentation:对消息的附加说明6消息规范与应用6.1消息规范–1)General标签•Name:消息名•Documentation:对消息的附加说明6消息规范与应用6.1消息规范–1)Detail标签•消息频率(Frequency)–消息频率可以让消息按规定的时间间隔发送–不定期(Aperiodic):将消息设定为不定期发送的消息、只发送一次,或者不规则时间间隔发送–定期(Periodic):将消息设定为定期发送的消息7消息编号消息编号用来表示一个消息的时间顺序,通过消息的顺序编号可以更清楚地看出各消息之间的时间顺序以及相互之间的关系。在交互图中可以选择显示消息编号。在顺序图中,消息可以按两种方式编号:Top-Level(顶级编号)方式,如1、2、3;或者Hierarchical(等级编号)方式,如1.1、1.1.2、1.1.3。在协作图中,消息只能采用Top-Level编号,但如果协作图是由顺序图转换而来,图中也可以使用Hierarchical编号。7消息编号7.1Top-Level编号–定义•顶级编号。编号由1开始,后续消息的编号单调递增,消息编号只有一个单一的数字,没有数字子集。–举例•如用户设定了编号为1.,1.1.,1.2.和1.2.1.的消息,在顶级编号时将被编号为1,2,3和4–一般用于对象和消息很少的顺序图中–要对消息进行顶级编号:•单击ToolsOptions;•单击Diagram标签;•选中SequenceNumbering复选框。7消息编号7.2Hierarchical编号–定义•即等级编号,Hierarchical编号使用带小数点的号码,方便显示消息嵌套。–举例•如1表示第一个消息,1.1表示嵌套在消息中的第一个消息,1.2表示嵌套在消息中的第二个消息。注意:如果删除消息1,则嵌套在消息1中的其他消息也将同时被删除。–要对消息进行等级编号:•选择ToolsOptions;•单击Diagram标签;•同时选中SequenceNumbering和HierarchicalMessages复选框。7消息编号7.2Hierarchical编号8协作图特有的要素——链8.1链的定义–链是关联的实例,当一个类与另一个类之间有关联时,这两个类的实例之间就有链,一个对象就能向另一个对象发送消息。所以链是对象间的发送消息的路径。–要在协作图中增加消息,必须先建立对象之间的链接。–链接一般建立在两个对象或者两个类实例之间,也可以建立反身链接。8协作图特有的要素——链8.2链的操作–创建链接:•单击工具箱中的按钮;•从一个对象拖动到另一个对象,创建链接。–创建反身链接•单击工具箱中的按钮;•单击发送消息的对象,建立反身链接。8协作图特有的要素——链8.3链的规范–1)General标签•关联(Assoc):两个对象的类之间建立的关联类关联对象之间的链接8协作图特有的要素——链8.3链的规范–1)General标签•可见性(Visibility):一个对象看到另一个对象的能力选项含义Unspecified(Default)不指定对象的可见性(默认值)Field供应者对象可见。Parameters供应者对象可见。供应者对象是客户对象操作中的一个参数。Local供应者对象局部可见。供应者对象是客户对象操作中的一个局部变量。Global供应者对象全局范围内可见。8协作图特有的要素——链8.3链的规范–2)Mes