




已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章:类图与对象图,王传栋 南京邮电大学计算机学院,Chd.Wang,E-Mail:C,2,类图,类图 是最广泛的一种模型,描述系统的结构 表述类、协作、接口及其关系 类图元素 类、接口、协作、关系、注释、约束等 关系连接类、协作与接口 注释对类和接口进行说明 约束对类和接口进行约束,Chd.Wang,E-Mail:C,3,类,类(Class) 具有相似结构、行为和关系的一组对象的描述 组成 名称:类的唯一标识 属性:描述类的静态特征 操作:说明类所提供的服务 职责:定义类的责任和义务 约束:指明类满足的规则 符号,Chd.Wang,E-Mail:C,4,类的属性和操作,属性 可见性属性名:类型多重性次序=初始值特性 可见性:可访问性 多重性:属性值个数格式 次序:属性值顺序 特性:属性约束 操作 可见性操作名(参数列表):返回类型特性,Chd.Wang,E-Mail:C,5,类之间的关系,关联(association) 泛化(generalization) 实现(realization) 依赖(dependence),Chd.Wang,E-Mail:C,6,关联(association),关联属性 名称:动词或动词短语 角色:名词或名词短语,类的关联职责 多重性:类关联的对象数 约束/依赖: 导航性: 表示源对象可以访问目标对象 限定符,Chd.Wang,E-Mail:C,7,关联(association),关联类型 双向关联 单向关联 聚合关联 弱的整体与部分关系 组合关联 强的整体与部分关系 关联类 自反关联 派生关联 限定关联,Chd.Wang,E-Mail:C,8,泛化(generalization),一般元素与特殊元素的关系 目的 子类继承、共享父类的属性和操作 可以使子类的实例用于任何父类被 声明使用的地方,实现多态 继承 父类的公共(public)和保 护(protected)特性被 子类继承,Chd.Wang,E-Mail:C,9,泛化(generalization),多态 每个子类的实现方法各不相 同,但外界的调用是一样的 例如: Shape *myShape; Line *myLine myLine = new Line; myShape = myLine; myShape.draw();,Chd.Wang,E-Mail:C,10,实现(realization),一个元素完成另外一个元素的操作功能 例如:接口类及其实现 接口没有属性,方法只声明不实现,由实现类具体定义方法的实现部分,Chd.Wang,E-Mail:C,11,依赖(dependence),模型元素之间语义上的关系 一个元素(b)的改变会影响另外一个元素(a),则存在依赖关系“a依赖于b” 关联、实现和泛化在本质 上都是依赖关系 分类 使用依赖:使用(use) 、调用(call) 、参数(parameter) 、发送(send) 、实例化(instantiate) 抽象依赖:跟踪(trace) 、精华(refine) 、派生(derive) 授权依赖:访问(access) 、导入(import) 、友元(friend) 绑定依赖:绑定(bind),Chd.Wang,E-Mail:C,12,类的种类,抽象类 abstract class 类名斜体表示 是对问题域分析得 到的抽象概念,不能直接实例化, abstract class体现“is a”继承关系,父类和派生类在概念本质上是相同的 抽象类主要用于类型隐藏,有数据成员,有abstract方法,也可以有非abstract方法 abstract方法可以只定义不实现,目的是构造一组固定行为的抽象描述,这组行为可以有任意多的具体实现 在不同子类中重写抽象父类的抽象方法,以实现多态,Chd.Wang,E-Mail:C,13,类的种类,接口类 Interface class 本质上是一种特殊形式的abstract class,没有数据成员,所有方法都是abstract的 不能直接实例化 interface class体现“like a”实现关系,不要求实现类和interface class概念本质上是一致的,仅仅是实现了interface定义者的契约 符号,Chd.Wang,E-Mail:C,14,类的种类,抽象类和接口的Java实现 问题域的理解:AlarmDoor在概念本质上是Door,同 时它有具有报警功能,Chd.Wang,E-Mail:C,15,类的种类,关联类 Association class 既是关联又是类,有属于关联类的属性 两个类之间具有多对多的关系,并且有些属性不属于关联两端任何一个类,Chd.Wang,E-Mail:C,16,类的种类,模版类 template class,也称parameterized class 利用占位符或参数来定义类,以此类为模版,可以创建一系列相似的类 模版与继承的区别 继承:父类派生出的子类表面相同,行为不同 模版:模版化的类具有相同行 为,但数据类型不同 例如: 定义处理不同数据类 型数组的类,Chd.Wang,E-Mail:C,17,类的种类,控制类 Control class,也称主动类 一个用例有一个控制类,协调其他类工作和控制总体逻辑流程 实例是具有独立控制权的主动对象,主动向其他类实例发出消息 主动对象拥有一个控制线程,并且能够控制线程的活动 符号: 例如:命令处理程序 嵌套类 也称内层类 一个类定义在另外一个类的内部 声明在外层类,只能由外层类或外层类的对象访问,Chd.Wang,E-Mail:C,18,类的种类,边界类 boundary class 位于系统与外界的交界处,例如窗体、对话框、报表、与外部设备或系统交互的类等 边界类可以通过用例确定,因为活动者必须通过边界类参与用例 UML符号,Chd.Wang,E-Mail:C,19,类的种类,边界类设计,Chd.Wang,E-Mail:C,20,类的种类,实体类 entity class 保存永久信息,最终 可能映射数据库中的 表和字段 符号: 实体类设计,Chd.Wang,E-Mail:C,21,对象模型与创建:问题陈述,示例:家庭图书管理 有一个爱书的人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时,系统会自动按规则生成书号,可以修改信息,但不能够删除记录。该系统还应该对书籍的外借情况进行记录,显示外借情况列表。另外,还希望对书籍的购买金额、册数按特定时限进行统计,Chd.Wang,E-Mail:C,22,对象模型与创建:寻找分析类,寻找备选类 名词、名词短语备选类列表 从备选类中筛选出候选类 人、家系统外概念,无需建模 图书管理系统、系统待开发系统,无须建模 书籍 书号、书名、作者、类别、出版社、单价属性 规则构造函数 关键字、功能、新书籍、信息、记录等描述需求,非问题本质,无须建模,Chd.Wang,E-Mail:C,23,对象模型与创建:寻找分析类,计算机类书籍、非计算机类书籍 借阅记录、借阅记录列表 外借情况(主体是朋友)、外借情况列表 书籍列表执行统计的主体 购买金额、册数、特定时限,和统计有关 候选类 书籍,计算机类书籍,非计算机类书籍 借阅记录,借阅记录列表 书籍列表,Chd.Wang,E-Mail:C,24,对象模型与创建:确定类关系,类关系 泛化:计算机类书籍、非计算机类书籍是书籍类的派生 聚合(弱的整体与部分关系) “书籍列表”是由“书籍”组成 “借阅记录列表”是由“借阅记录”组成 双向关联 “借阅记录”和“书籍” 浏览书籍时,会看到书 的外借信息;归还时, 从借阅记录也能 关联到书籍,Chd.Wang,E-Mail:C,25,对象模型与创建:给关联加属性,关联的属性 名称 角色 多重性 导航型 约束 限定符 注 复杂的系统将关联密切的类组成包,以便更好地组织子系统,Chd.Wang,E-Mail:C,26,对象模型与创建:类的职责,类职责 类所维护的信息 成员变量(属性) 类提供的行为 成员方法,Chd.Wang,E-Mail:C,27,示例:电子商务网站,需求陈述 张三给朋友李四(可能在异地)送生日蛋糕 在电子商务网站的蛋糕网店订蛋糕 蛋糕实体店收到订单,派遣送货员给李四送蛋糕,Chd.Wang,E-Mail:C,28,示例:电子商务网站,抽取业务模型,Chd.Wang,E-Mail:C,29,示例:电子商务网站,类 订单类:Order 订单项类:OrderItem 顾客类:Customer 收货人类:Consignee 送货单类:DeliverOrder 商户类:Peddlery 产品类:Product,Chd.Wang,E-Mail:C,30,示例:电子商务网站,类关系 组合关系: Order与OrderItem 关联关系 Order与Customer、Consignee、 DeliverOrder DeliverOrder与Order、 OrderItem、Consignee 、Peddlery Product与Peddlery、OrderItem,Chd.Wang,E-Mail:C,31,示例:电子商务网站,初步的对象模型,Chd.Wang,E-Mail:C,32,示例:电子商务网站,对象模型的细化 关联的属性 多重性 导航性 角色 限定符 约束 类的职责 属性 行为,Chd.Wang,E-Mail:C,33,对象图,对象 是客观存在的事物 一件事、一个实体、一个名词 汽车、人、房子、桌子、狗、支票簿或雨衣 对象有属性 汽车有厂家、型号、颜色和价格 狗有种类、年龄、颜色 对象有行为 汽车可以移动 狗会吠,Chd.Wang,E-Mail:C,34,对象图,对象的特点 状态 在某一时刻,对象所有属性值的集合 行为 对象不能孤立存在,对象可以操作或被操作 行为是对象根据其状态改变和消息传送,采取的行动或做出的反应 标识 区分于其他对象,Chd.Wang,E-Mail:C,35,对象图,对象与类的区别 对象是一个存在于时间和空间中的具体实体 类是一个模型,模型抽象了对象的本质:一组公共属性和一组公共方法。 类是静态的,对象是动态的 类是一般化,对象是个性化 类是定义,对象是实例 类是抽象、对象是具体,Chd.Wang,E-Mail:C,36,对象图,对象图是类图的实例 几乎使用与类图完全相同的标识 对象图显示类的多个实例,而不是实际的类 对象具有生命周期,对象图只能在系统某一时间段存在 对象图描述对象及其关系 描述业务或系统在某一时刻的对象组成、结构和关系 对象图的图元素 对象符号 链接 注释 约束,Chd.Wang,E-Mail:C,37,对象图,示例,Chd.Wang,E-Mail:C,38,习题 8.1,(a) (b),Chd.Wang,E-Mail:C,39,习题 8.1,(c) (d),Chd.Wang,E-Mail:C,40,习题 8.2,(a) (b) (c) (d) (e),Chd.Wang,E-Mail:C,41,习题 8.3,(a) 正确 (b) 错误 类C实例不允许独立存在, 1个类C实例都确定链接1个类D实例 (c) 错误 类D的1个实例最多只能链接1个类C实例 (d) 错误 1个类C实例都当且仅当只能链接1个类D实例 (e) 错误 类图中没有定义与链接匹配的关联 (f) 正确 类D实例可能独立存在,Chd.Wang,E-Mail:C,42,习题 8.4,(a) 正确 类C实例可以链接0到多个类D实例 (b) 错误 类D实例不允许独立,每1个类D实例都确定链接1个类C实例 (c) 正确 (d) 错误 每1个类D实例都当且仅当只能链接1个类C实例 (e) 正确 类C实例可以链接0到多个类D实例 (f) 错误 最上面的类D实例链接了2个类C实例,Chd.Wang,E-Mail:C,43,习题 8.5,参考答案,Chd.Wang,E-Mail:C,44,习题 8.6,(a) P119图8.20表达信息不精确 多重性表达不准确修改多重性 祖先链存在无限和循环 的可能改为聚合关联,Chd.Wang,E-Mail:C,45,习题 8.6,(b) 抽象的“关系类(liaison)”,表示类person之间的关系 类(marriage)是抽象“关系类(liaison)”的子类 类(person)与“关系类(liaison)”有关联关系(childof),Chd.Wang,E-Mail:C,46,习题 8.7,参考答案 课本P120原图8.22,Chd.Wang,E-Mail:C,47,习题 8.7,参考答案 改进后图 记录职别和薪水,Chd.Wang,E-Mail:C,48,习题 8.8,(a) 正确 (b) 错误 关联“beta”只能链接C和T的类实例 (c) 错误 C是A的子类,T是S的子类;图示alpha链接是正确的 但在T类实例存在的情况下,应该有一个确定的C类实例与之存在beta链接 (d) 正确 B类是A类的子类 一个S类实例可以与任意(0n)的B类实例存在alpha链接,Chd.Wang,E-Mail:C,49,习题 8.8,(e) 正确 B类或C类都是A类的子类 一个S类实例可以与任意(0n)的B类实例或C类实例之间,存在alpha链接 (f) 正确 C类是A类的子类,T类是S类的子类 C类实例和T类实例之间存在多重联系,既存在alpha链接,也存在beta链接 (g) 错误 S类和T类之间只有泛化关系,没有其他的关联,Chd.Wang,E-Mail:C,50,习题 8.8,(h) 错误 同(c),图示的alpha链接是正确的 但缺少一个确定的beta链接,T类实例不会孤立存在 (i) 错误 B类实例不能与T类实例建立beta链接 (j) 错误 C类是A的子类,C类实例不会孤立存在,必须有一个S类实例(或S子类实例)与之有alpha链接 T类实例与C类实例有一确定的beta链接 (k) 正确 (l ) 正确,Chd.Wang,E-Mail:C,51,习题 8.9,参考答案 系统运行时,特定子 类的类实例对象使用 定义在抽象父类中的 公共接口,是泛化、多态的主要优点; P126图8.31中,若类shape省略抽象draw()方法, 就失去draw()方法的多态机制;即:泛指的shape对象不知道调用哪一个shape子类实例的draw()方法,如 Shape s = new Rectangle() ; s.draw() ; 此时,使用s的draw()方法前,必须明确s所属具体子类,如:(Rectangle) s).draw() ;,Chd.Wang,E-Mail:C,52,习题 8.10,参考答案 现实生活中,父子关系是不具有对称性和传递性的 父子关系是反对称的,没有人能够做自己的父母 父子关系是不可传递,祖父与父亲是父子关系,父亲和儿子是父子关系,祖父与儿子就不是父子关系 故P119图8.20中的双向关联改为聚合关联更为恰当,Chd.Wang,E-Mail:C,53,习题 8.11,参考答案 P129图8.36 改进后的类图与对象图,Chd.Wang,E-Mail:C,54,习题 8.12,参考答案 P129图8.37 对象图,Chd.Wang,E-Mail:C,55,习题 8.13,参考答案 P132图8.44含义,1个学生 选修1门课程,可以参加0n次考试 但对于1个Attempt实例,与之链接的Student实例数和Module实例数,没有给出精确的限制;一个Attempt实例,可能并不链接至任何Student实例或Module实例,但至多只能和1个Student实例和1个Module实例链接; N元关联的重数的含义比2元关联的重数更为复杂,在实际建模中,通常使用2元关联,不使用N元关联。,Chd.Wang,E-Mail:C,56,习题 8.14,P117图8.15:公司雇佣职员 a方案 一个person只 能受雇于一个 company,可以将salary属性简单地加在person类中 b方案 可以将salary属性加在一个关 联类contract中 a方案简单,b方案灵活 b方案能应对业务规则改变,考虑业务规则变化,增加关联类的设计是值得的,Chd.Wang,E-Mail:C,57,习题 8.15,分析过程 提取名词 总结业务实体 抽象业务模型 设计领域模型 Book与Copy Book是逻辑书 Copy是物理书,Chd.Wang,E-Mail:C,58,习题 8.15,类图,Chd.Wang,E-Mail:C,59,习题 8.16,文件系统模型 目录包含子目录和文件 文件系统由根目录下的一 组文件组成 用户可以拥有目录和文件 用户可以读文件并拥有一 个主目录,Chd.Wang,E-Mail:C,60,习题 8.16,(a) 对象图,Chd.Wang,E-Mail:C,61,习题 8.16,(b) 修改后的类图,Chd.Wang,E-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 规划技术合同协议
- 承包合同转租协议
- 方舟代理合同协议
- 购买公寓合同协议
- 股份委托合同协议
- 概念规划合同协议
- 报关合同协议模板
- 车库定金合同协议
- 考察翻译合同协议
- 考场租赁合同协议
- 2024年四川省泸州市小升初数学试卷(含答案)
- 2023-2024学年天津市中小学生mixly创意编程 第4课 聪明的按键-教学设计
- 2024年12月大学英语四级考试真题及答案第1套
- SA8000社会责任法律法规清单一览表
- 化学-辽宁省协作体2024-2025学年度高三上学期期末考试试题试题和答案
- 2025年文化产业投资入股保密协议模板3篇
- 2025-2030年中国酶制剂行业竞争格局展望及发展战略研究报告
- 消化道出血介入术后护理
- 《自救器的使用与创伤急救》培训课件2025
- 2025年浙江杭州市人才管理服务中心(杭州市人事考试院)编外员工招聘高频重点提升(共500题)附带答案详解
- 军恋对象申请书表
评论
0/150
提交评论