资源描述
第5章 类图 交互作用图,授课教师:付 超,内容提纲,1. 类图 2. 交互作用图,1. 类图,1.1 类图 1.2 类图的划分 1.3 类图的应用 1.4 对象图 1.5 对象图的应用,1. 类图,类图(Class Diagrams) 软件系统中,类模型和对象模型揭示了系统的结构。在UML中,类模型和对象模型分别由类图和对象图表示。 类图描述了类集、接口集、协作以及它们之间的关系。在类图基础上,状态图、协作图等进一步描述系统其它方面的特征。 类图可用来为系统的静态设计视建模。类图组成: (1) 类 (2) 接口(操作集合) (3) 协作 (4) 依赖、类属、实现或关联关系,1.1 类图,1. 类图,1. 类图,含有注释和约束,还可包含包或子系统,组装为大模块,1. 类图,1. 类图,组合:整体生命周期,1. 类图,类图的划分 在软件开发的不同阶段,类图描述了不同层次的抽象。以需求阶段、设计阶段、实现阶段将类图划分为三个层次: (1) 概念层(Conceptual)类图描述问题域中的概念(概念模型独立于实现软件和程序语言) (2) 说明层(Specification)类图描述软件的接口,接口区别于实现。,1.2 类图的划分,1. 类图,类图的划分 (3) 实现层(Implementation)揭示软件的实现部分(使用的主流) 正确区分类图的三个层次,利于画类图和读懂类图。 接口:接口因实现环境、运行特性或用户的不同而具有多种实现。,1.2 类图的划分,1. 类图,类图的应用 在为系统静态设计视建模时,类图可用来描述以下三种建模: (1) 为系统的词汇表建模 确定抽象与系统的界定,即抽象属于系统或不属于,规定抽象及其责任。 (2) 为简单的协作建模 (a) 确定要与之建模的机制,机制代表了需要被模拟的部分系统的功能和行为(由类、接口等交互作用产生),1.3 类图的应用,1. 类图,类图的应用 (2) 为简单的协作建模 (b) 对于每个机制,确定参与这个协作的类、接口和其他动作,确定这些元素间的关系 (c) 根据协作的脚本,发现遗漏的模型部分,以及简单的语义错误 (d) 确定对象的属性和操作,公司通过外部银行发薪水,1. 类图,类图的应用 (3) 为逻辑的数据库模式建模 需要在数据库中存储持久性信息。 (a) 确定模型中的一些类,这些类的状态的存在超过了程序的生命周期 (b) 创建一个类图,包含这些类并标记为持久类 (c) 扩充这些类的结构信息,如属性、阶元 (d) 如有必要,创建中间抽象以简化数据库的逻辑结构,1. 类图,类图的应用 (3) 为逻辑的数据库模式建模 (e) 考虑类的行为,扩充对于数据访问和数据完整性很重要的操作(完备性) (f) 如可能,用工具将逻辑设计转变为物理设计(存在一些专门的DB ASSISTANT),1. 类图,类图的应用 类实例存储于数据库中,原型为persistent,一个ITEM有一个TITLE,一个TITLE存在于0-N个ITEM中。一个ITEM有0-1个借阅信息,一条借阅信息仅有一个ITEM。 一个TITLE有0-N个预订记录。一个借阅人信息有0-N个预订记录,0-N个借阅记录。,1. 类图,用例与类图 用例图实质上是一种系统描述的形式,自然可以根据用例描述来识别类。针对各个用例,通常可以根据如下的问题辅助识别: (1)用例描述中出现了那些实体? (2)用例的完成需要哪些实体合作? (3)用例执行过程中会产生并存储哪些信息? (4)用例要求与之关联的每个角色的输入是什么? (5)用例反馈与之关联的每个角色的输出是什么? (6)用例需要操作哪些硬设备?,1. 类图,选课管理系统的简单用例,1. 类图,选课管理系统的简单用例(属性和操作),1. 类图,远程网络教学系统 在该系统中,系统的参与者为学生、教师和系统管理员。学生包括登录名称、登录密码、学生编号、性别、年龄、班级、年级、邮箱等属性。教师包含自己的登录名称、登录密码、姓名、性别、教授课程、电话号码和邮箱等属性。系统管理员包含系统管理员用户名、系统管理员密码、邮箱等属性。根据这些信息,创建系统的类图。,1. 类图,远程网络教学系统,1. 类图,远程网络教学系统 将参与者学生、教师和系统管理员进行抽象,形成一个单独的人员类,学生、教师和系统管理员分别是人员类的继承。根据这些信息,重新创建类图。,1. 类图,对象图(Object Diagrams) 对象图模拟类图中所含有的类的实例,描述了某一瞬间(具体时刻)对象集及对象间的关系,主要用来为对象结构建模。 对象图可以看作是类图的实例,对象间的连接是类间关联的实例。对象图中通常含有: (1) 对象(Objects) (2) 连接(Links),1.4 对象图,1. 类图,对象图(Object Diagrams) 对象图中含有注释、约束、包或子系统。描述静态的数据结构。,1. 类图,对象图的应用 通常用于为对象结构建模,可用来可视化、规范、构造、并文档化系统中特定实例的存在以及实例间的关系。为对象结构建模时: (1) 确定要模拟的机制,机制代表了所模拟的部分系统的由类、接口等交互作用产生的功能或行为 (2) 对于每个机制,识别参与这个协作的类、接口以及其他元素,并确定这些元素间的关系,1.5 对象图的应用,1. 类图,对象图的应用 (3) 考虑贯穿这个机制的一个脚本,显示在脚本的某一时间点参与这个机制的对象(时间点的动态性) (4) 如有必要,揭示每个对象的状态和属性值(图形是否能表示清楚,不至于过于复杂) (5) 类似地,揭示对象间的连接,这些连接是关联关系的实例,各同类对象的名称不同,1. 类图,2. 交互作用图,2.1 交互作用图 2.2 时序图 2.3 协作图 2.5 语义等价 2.6 交互作用图的应用,Page 29,UML及其建模工具,2. 交互作用图,交互作用图 包括时序图和协作图,为系统的动态方面建模。时序图和协作图以不同的方式表达了类似的信息。时序图描述消息的时间顺序,适合于描述实时系统和复杂的脚本;协作图描述对象间的关系。两者在语义上相当,彼此转换而不损失信息。 交互作用图主要组成元素 (1) 对象 (2) 连接 (3) 消息 包含注释和约束,2.1 交互作用图,2. 交互作用图,时序图实例,2. 交互作用图,协作图实例,2. 交互作用图,时序图(Sequence Diagrams) 存在两个轴,水平轴表示不同的对象,垂直轴表示时间。 时序图标识元素 (1) 对象:带垂直虚线的矩形框 (2) 垂直虚线:对象的生命线 (3) 对象间通信:对象的生命线间画消息,2.2 时序图,2. 交互作用图,时序图实例,2. 交互作用图,消息 可以是信号、操作调用等。当收到消息,接收对象执行相应的活动,对象生命线上细长矩形框表示对象激活。 消息以带标签的箭头表示,省去序列号,可带条件表达式,即互斥的分支。 时序图与协作图区别 (1) 有对象生命线 垂直的虚线,对象生命线代表对象创建直到结束的生命周期,生命线的终端标一个“X”(对象此时被销毁)。,2. 交互作用图,时序图与协作图区别 (2) 有控制中心 细长的矩形,表示对象直接或通过子过程执行一个动作的时间段。矩形的顶端和动作的开始对齐,矩形的底部和动作的完成对齐(可以用返回消息来标记)。,2. 交互作用图,时序图中的激活,2. 交互作用图,时序图中的消息,2. 交互作用图,时序图与协作图区别 客户端发消息给PrintService,Service接着发消息给Image创建工资单,在建立工资单的打印图象时,需要雇员的信息,及工资数,而后建立打印图象。最后,Service发消息到打印接口,打印工资单。,2. 交互作用图,学生信息查询需求分析 基本工作流程如下: (1)李老师希望通过系统查询某名学生的学科成绩。 (2)李老师通过用户界面录入学生的学号以及学科科目请求学生信息。 (3)用户界面根据学生的学号向数据库访问层请求学生信息。 (4)数据库访问层根据学生的学号加载学生信息。 (5)数据库访问层根据学生信息和学科科目获取该名学生的分数信息。 (6)数据库访问层将学生信息和分数信息提供给用户界面。 (7)用户界面将学生信息和分数信息显示出来。,2. 交互作用图,学生信息查询确定序列对象 建模时序图的下一步是从左到右布置在该工作流程中所有的参与者和对象,同时也包含要添加消息的对象生命线。,2. 交互作用图,学生信息查询创建时序图,2. 交互作用图,远程网络教学系统 在该系统中,系统管理员需要登录系统才能进行系统维护工作,如添加教师信息、删除教师信息等。根据系统管理员添加教师信息用例,创建相关时序图。,2. 交互作用图,远程网络教学系统 如果我们单独抽象出来一个数据访问类来进行数据访问。那么,根据系统管理员添加教师信息用例,重新创建相关序列图。,2. 交互作用图,协作图 强调参与交互作用的对象的组织。描述了交互作用的对象的静态结构(上下文),对象间交换的消息的时间顺序(交互作用) 。 区别于时序图的特点 (1) 有路径:表示对象间如何连接 (2) 有序列号:表示消息的时间顺序,如1、1.1、2、3.4,可以是任意深度的嵌套。,2.3 协作图,2. 交互作用图,协作图的特点 1. 通过描绘对象之间消息的传递情况来反映具体的使用语境的逻辑表达。一个使用情境的逻辑可能是一个用例的一部分,或是一条控制流。 2. 显示对象及其交互关系的空间组织结构。协作图显示了在交互过程中各个对象之间的组织交互关系以及对象彼此之间的链接。与时序图不同,协作图显示的是对象之间的关系,并不侧重交互的顺序,它没有将时间作为一个单独的维度,而是使用序列号来确定消息及并发线程的顺序。 3. 协作图的另外一个作用是表现一个类操作的实现。协作图可以说明类操作中使用到的参数、局部变量以及返回值等。当使用协作图表现一个系统行为时,消息编号对应了程序中嵌套调用结构和信号传递过程。,2. 交互作用图,创建协作图的步骤 (1) 根据系统的用例或具体的场景,确定协作图中应当包含的元素。 (2) 确定这些元素之间的关系,可以着手建立早期的协作图,在元素之间添加链接和关联角色等。 (3) 将早期的协作图进行细化,把类角色修改为对象实例,并且链上添加消息并指定消息的序列。,2. 交互作用图,2. 交互作用图,不带有消息的协作图标明了交互作用发生的上下文,而不表示交互。它可以用来表示单一操作的上下文,甚至可以表示一个或一组类中所有操作的上下文。如果关联线上标有消息,图形就可以表示一个交互。典型的,一个交互用来代表一个操作或者用例的实现,2. 交互作用图,学生信息查询需求分析 基本工作流程如下: (1)李老师希望通过系统查询某名学生的学科成绩。 (2)李老师通过用户界面录入学生的学号以及学科科目请求学生信息。 (3)用户界面根据学生的学号向数据库访问层请求学生信息。 (4)数据库访问层根据学生的学号加载学生信息。 (5)数据库访问层根据学生信息和学科科目获取该名学生的分数信息。 (6)数据库访问层将学生信息和分数信息提供给用户界面。 (7)用户界面将学生信息和分数信息显示出来。,2. 交互作用图,学生信息查询确定协作图元素 从已经描述的用例中,我们可以确定需要“教师”、“学生”和“成绩”对象,我们还要一个提供教师与系统交互的场所,那么我们需要一个“用户界面”对象。“用户界面”对象如果要获取“学生”和“成绩”对象的信息,那么我们还需要一个用来访问数据库的对象。将这些对象列举到协作图中。,2. 交互作用图,学生信息查询确定元素间的关系 确定这些对象之间的连接关系,使用链和角色将这些对象连接起来。在这一步中,我们基本上可以建立早期的协作图,表达出协作图中的元素如何在空间上进行交互。,2. 交互作用图,学生信息查询创建协作图,2. 交互作用图,远程网络教学系统 在该系统中,系统管理员需要登录系统才能进行系统维护工作,如添加教师信息、删除教师信息等。根据系统管理员添加教师信息用例,创建相关协作图。,2. 交互作用图,远程网络教学系统 如果我们单独抽象出来一个数据访问类来进行数据访问。那么,根据系统管理员添加教师信息用例,重新创建相关协作图。与前述的时序图进行对比?,2. 交互作用图,语义等价 时序图与协作图在语义上是等价的,因而它们可以相互转换而不损失信息。但它们显式地可视化描述了不同的信息,协作图显式描述对象间如何连接,时序图显式描述对象间交互消息的时间顺序。 前面描述打印工资单的时序图和协作图是等价的,可以相互转换而不损失信息。,2.4 语义等价,2. 交互作用图,交互作用图的应用 为系统的动态方面建模,上下文(建模环境)可以是整个系统、一个子系统、一个操作或一个类,还可为用例的一个脚本建模。 (1) 按时间顺序为控制流建模 (a) 确定交互作用的上下文 (b) 确定参与交互作用的对象,按重要性从左至右放在时序图中 (c) 确定每个对象的生命线 (d) 按消息发生的时间从上到下放置在生命线间,2.5 交互作用图的应用,2. 交互作用图,交互作用图的应用 (1) 按时间顺序为控制流建模 (e) 如需规定时间或空间约束,可为消息附加适当的时间或空间约束 (f) 如想更正式地描述这个控制流,可为每个消息添加前置条件和后置条件 (2) 按组织结构为控制流建模 (a) 确定交互作用的上下文 (b) 确定参与交互作用的对象,按重要性由中间到四周放在协作图中,2. 交互作用图,交互作用图的应用 (2) 按组织结构为控制流建模 (c) 确定每个对象的初始特性,显示对象在交互作用期间发生的变化,用复制对象表示变化后的对象以区别于原对象(体现对象随时间的变化) (d) 确定对象间的连接 (i) 先布置关联连接 (ii) 再布置其他的连接:按消息发生的时间顺序确定消息序列号,可为消息附加适当的时间或空间约束,可为消息添加前置条件和后置条件。,2. 交互作用图,交互作用图的应用 单个协作图只描述一个控制流。通常,采用多个交互作用图来描述系统的动态特性,一部分描述主要过程,其它的描述备选过程或例外过程。,
展开阅读全文