2020/1/301UML建模技术任课教师:丁红胜E-mail:tsgding@163.com课程名称:北方民族大学计算机科学与工程学院第21-24讲第9章交互概况图和组合结构图2020/1/302第8章交互概况图和组合结构图本章学习要点:理解什么是交互概况图了解交互概况图的优点能够使用交互概况图为用例建模理解组合结构图的作用了解组合结构图描述的内容2020/1/303交互概况图和组合结构图顺序图、通信图和时序图主要关注特定交互的具体细节,而交互概况图则将各不同的交互结合在一起,形成针对系统某种特定要点的交互整体图。交互概况图的外观与活动图类似,只是将活动图中的动作元素改为交互概况图的交互关系。如果概况图内的一个交互涉及时序,则使用时序图;如果概况图中的另一个交互可能需要关注消息次序,则可以使用顺序图。交互概况图将系统内单独的交互结合起来,并针对每个特定交互使用最合理的表示法,以显示出它们如何协同工作来实现系统的主要功能。2020/1/3049.1交互概况图的组成交互概况图不仅外观上与活动图类似,甚至在理解上也可以以活动图标准,只是以交互代替了活动图中的动作。交互概况图中每个完整的交互都根据其自身的特点,以不同的交互图来表示,如图所示。ObjAObjBObjCmessage1message2ObjAObjB1:message12:message2每个“活动”是一个交互,该交互根据其自身特点以不同的图表示2020/1/305交互概况图与活动图一样,都是从初始节点开始,并以最终节点结束。在这两个节点之间的控制通过两者之间的所有交互。并且,交互之间不局限于简单按序的活动,它可以有判断、并行动作甚至循环,如图所示2020/1/3062020/1/307说明:从初始节点开始,控制流执行第一个顺序图表示的交互,然后并行执行两个通信图表示的交互,然后合并控制流,并在判断节点处根据判断条件值执行不同的交互:当条件为真时执行通信图表示的下一个交互,交互完成后结束,而条件为假时执行下一个顺序图表示的交互,该交互在结束之前将循环执行5次。2020/1/3089.2为用例建模交互概况图在使用交互概况图为用例建模前,先回顾一下活动图。活动图以活动、状态、控制流等方式描述了系统的用例,而交互概况图是以顺序图、通信图和时序图描述用例,这两者以不同的方式描述了相同的内容。交互概况图以活动图的形式,交互图的内容对用例进行描述。2020/1/3099.2.1交互以交互概况图为用例建模时,首先必须将用例分解成单独的交互,并确定最有效表示交互的图类型。例如,对“图书管理系统”中的借书用例的基本操作流程而言,它可以分为如下几个交互:验证借阅者身份检验借阅者是否有超期的借阅信息获取借阅的图书信息检验借阅者借阅的图书数目记录借阅信息2020/1/3010对于交互“验证借阅者身份”和“记录借阅信息”而言,消息的次序比任何其他因素都重要,因此对这些交互使用顺序图。此处可以重用建模顺序图中的相关步骤,如图所示。2020/1/3011为了使交互概况图中的交互多样化,“检验借阅者借阅的图书数目”和“检验借阅者是否有超期的借阅信息”交互将以通信图表示,如图所示。2020/1/3012假设“获取借阅的图书信息”交互对时间非常敏感,它要求整个交互要在1秒内完成。这部分交互主要关注时序,并且交互概况图能包含任何不同的交互图类型,因此这部分交互在交互概况图中可以用时序图表示。2020/1/30139.2.2组合交互在分析交互概况图中的各个交互后,下一步就是将所有的交互根据操作步骤,使用控制线将各个交互连接起来形成一幅图——交互概况图。2020/1/30142020/1/30159.3组合结构图组合结构图是一种高级视图,其显示了如下内容:内部结构:显示包含在类里的各个成员,以及各个成员之间的关系。如何使用类:显示类如何通过端口作用于系统。合作:显示系统中一组对象共同协作完成某件事。2020/1/30169.3.1内部结构在介绍类图时,曾介绍类之间的关系,包括关联和组合。组合结构图提供了显示这些关系的替代方式。描述了类图中的组合关系,通过组合关系显示Table包含Record和FieldType类型的对象。TableFieldTypeRecord11..*10..*2020/1/3017假设更新类图以反映Record到FieldType的一个引用,因为这对于其他对象而言,向Record对象请求它所对应的FieldType对象会更方便。为了实现这种情况,首先需要在FieldType和Record类之间添加关联,添加关联后的类图效果如图所示2020/1/3018Record对FieldType和Table之间的组合不敏感,不能限制上述情况的发生。即一个表格中的记录引用另一个表格中的字段类型。2020/1/3019而用户真正的意图是一个表格中的记录引用同一个表格中的数据类型,如图所示的对象结构图才是用户真正想要的。2020/1/3020组合结构图显示类的内部结构2020/1/3021组合结构图显示类的结构特性组合结构图除显示成员之外,也可以显示特性。特性通过关联被引用,可以为系统里的其他类所共享。特性使用虚线框表示,而成员以实线外框表示。图8-13显示一张类图,其中Frame关联到Button,并显示Button是Frame内部结构中的特性。该类图为一个GUI建模,其中GUI在面板上显示了几个按钮。2020/1/3022如果正在显示具有内部结构的类的实例,则可以用实例显示其成员和特性。图8-15显示了如图8-14所示的内部结构图运行时实例。2020/1/30239.3.2使用类类的内部结构主要关注于类的内容,为了显示一个类如何被其他类所用,组合结构图引入了端口。端口侧重于类的外部,显示一个类如何被其他类所使用。端口是类与外部世界之间的交互点。端口通常是通过不同类型的客户,以表示类的不同使用方法。例如,一个Table类可以有两种不同的用法:1.用户查看及编辑此Table。2.管理员则可以修改数据、添加数据,以及修改Table结构。232020/1/3024类的每一种使用方法以不同的端口表示,端口以类边界上的一个小矩形表示,如上图,在端口的旁边添加一个名称,以显示端口的目的。2020/1/3025回顾类图,类能实现接口。当类实现一个接口时,该接口称为此类的提供接口,一个提供接口可以使其他类通过该接口访问此类。与提供接口相反,类还可以有需求接口。需求接口是类运行的接口,即该类需要一个实现该接口的类来为其提供服务。如图8-17所示的Tabte类实现了updateable和Viewable接口,让其他类通过这些接口修改及查看Table类。这些接口与端口Userservices关联;而Maintenance端口则与Modifyable接口和AddDataable接口关联,其中Modifyable接口是一个需求接口,是Table用于修改表结构的服务,AddDataable接口是提供接口,以便管理向表中添加数据。2020/1/30269.3.3合作合作显示一组对象之间共同协作完成某项任务。这与对象图有点类似,但合作通过文字来描述对象。合作是将设计模式文档化,设计模式就是软件设计时,对常见问题的解决方案。下面考虑使用设计模式解决一个问题。借阅图书的操作流程为:图书管理员输入借阅者信息和所借阅图书信息,系统根据规定进行验证以确保其合法性,若合法则通过数据库记录借阅,否则拒绝借阅,数据库则根据传递的信息及时更新借阅信息。对于该操作流程可以使用责任链(ChainofResponsibility,COR)设计模式实现。责任链设计模式是一种可用于许多具体领域的行为模式,该模式用于处理一组对象和一个请求之间的关系,当一个请求可以被多个对象处理时,就可以运用这个模式。责任设计模式让对象发送请求,而不考虑哪个对象最后会处理该请求。2020/1/3027借阅图书的操作流程里,图书管理员扮演客户的角色,系统和数据库分别扮演处理器的角色。使用合作为此设计模式建模有两种方法。第一种使用一个大的虚线椭图,并将合作的所有参与者画在椭圆中。参与者以连接符链接在一起,显示它们之间如何通信。合作的名称被添加在虚线椭圆的上部,如图所示。2020/1/3028第二种表示方法如图所示。在这种表示法中,参与者以矩形表示,并将各个矩形连接到一个小的合作椭圆,连线上标识参与者的角色。2020/1/30292020/1/3030个别概念英文表示interactionoverviewdiagram:交互概况图sequencediagram:顺序图communicationdiagram:通信图timingdiagram:时序图2020/1/3031个别概念英文表示2timing:时序interactiontiming:交互的时序logicanalyzer:逻辑分析仪state:状态state-line:状态线event:事件message:消息eventsource:事件来源eventreceiver:事件接收者timingconstraints:时序约束2020/1/3032个别概念英文表示3CommunicationDiagrams:Participants:参与者Links:链接Messages:消息communicationlink:通信链接nested:嵌套number-and-letter:“数字-字母”表示法guardcondition:监护条件number-point-nested:“数字-点号-嵌套”表示法fireandforget:异步消息方式2020/1/3033个别概念英文表示4order:次序(交互的)participant:参与者lifeline:生命线event:事件signal:信号message:消息messagecaller:消息调用者messagereceiver:消息接受者messagearrow:消息箭头messagesignature:消息签名arguments:参数activationbar:活动条receivingparticipant:接收参与者synchronousmessage:同步消息asynchronousmessag...2020/1/3034个别概念英文表示5scenario:特定情境underline:下划线(对象名称加下划线)anonymousobject:匿名对象eventhander:事件处理程序/link:链接\association:关联constraint:约束Figure6-1.ObjectDiagramsLearn:LearningUML2.0,O'ReillybyRussMiles&KimHamilton2020/1/3035个别概念英文表示6interface:接口abstractclass:抽象类-generalization:泛化\parent:父类\base:基类\superclass:超类inheritance:继承children:子类derived:派生类-fivedifferenttypesofclassrelationship:\dependency:依赖\association:关联\aggregation:聚合\composition:组合\generalization:泛...2020/1/3036个别概念英文表示7为系统逻辑结构建模:类与类图class:类object:对象instance:实例state:状态behavior:行为attribute:属性inlineattribute:内置属性attributeproperties:属性特性operation:操作abstraction:抽象化encapsulation:封装visibility:可见性(public,protected,package,private)accessible