面向对象设计ObjectOrientedDesign课件_第1页
面向对象设计ObjectOrientedDesign课件_第2页
面向对象设计ObjectOrientedDesign课件_第3页
面向对象设计ObjectOrientedDesign课件_第4页
面向对象设计ObjectOrientedDesign课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十一章 面向对象设计(Object-Oriented Design)1. OOD准则:优秀软件设计的一个重要特点是容易维护回顾:SD准则包括 Modularization Abstraction Information hiding Module independence对于 OOD有类似的准则: 1、Module = Object第1页,共38页。1. OOD准则 Procedure abstraction: 在SD中已讨论 Data abstraction: Class即是一种抽象数据类型。外界无须知道实现方法就可按照类协议(class description protocol)* 使用

2、class中定义的数据。 Parameter abstraction: 将数据类型作为参数处理。* Class description protocol : The complete definition of all properties, features, and methods that are descriptive of any object that is an instance of a class. Timothy Budd An Introduction to Object-Oriented Programming Addison-Wesley Publishing Com

3、pany, Inc. 19912、Abstraction:抽出事物的本质特性, 暂不考虑其细节,使设计从具体实现方法中超脱。第2页,共38页。1. OOD准则例:C+ 中的“模板”(template)template class array_n private : T items n ; / 定义了T类型的向量元素共n个 ;main ( ) array_n w ; /w是有1000个元素的复向量 第3页,共38页。1. OOD准则3、Information hiding = Encapsulation of object4、Coupling: 交互耦合(interactive coupling

4、):通过传递message发生要求 降低参数个数和参数复杂性 减少objects发送 接收message的个数 as loose as possible 继承耦合(inheritance coupling): 要求 Parent class IS_A child class as high as possible第4页,共38页。1. OOD准则 一般-特殊内聚(general-particular cohesion): High g-p cohesion High inheritance coupling5、Cohesion: 服务内聚(service cohesion):一个服务只完成一个

5、功能。 类内聚(class cohesion):一个类只有一个用途,否则分解之。6、Reusability(详见3)第5页,共38页。2. 启发式规则1、设计结果清晰易懂,应做到: 用词一致 按习惯用法命名。不同classes中相似的methods最好取同一名字。 使用已有的protocol。 尽量减少message模式的数目。 避免模糊定义。2、一般-特殊结构的深度应适当(约100个classes,则设计72层)第6页,共38页。2. 启发式规则3、设计简单的class(定义不超过一页纸或两屏)。应注意: 避免过多attributes; 能用简单的语句描述一个class的任务; object

6、s之间合作关系要简单; 避免过多methods( 7个)。问题:设计出大量的classes,使结构复杂度增加。解决:划分主题,提高可理解性。4、使用简单的protocol,减少message 中传递的 parameters5、使用简单的method(CASE 可考虑用 inheritance替代)。6、把设计变动减至最小。第7页,共38页。1、概念: 知识重用(例如软件工程知识的重用) 方法和标准重用(例如OO方法和国家规定的软件开发规范的重用) 软件成分的重用3. 软件重用 (Software Reuse)知识工程 源码剪贴 无法溯源,无配置管理 Include 修改后所有包含了此段代码的程

7、序都须重新编译。 Inheritance 无须改动原有代码 想象一下,stdio.h 被改动之后重用软件成分有三个级别: 代码重用:第8页,共38页。3. 软件重用 设计重用 当移植系统时 分析重用 当需求未变,而系统结构改变时(例如将HDIS改为OO实现)2、重用效果的衡量: 额外代价: 创建可重用成分的专门投资 多花2 4倍时间测试以保证质量 构件库的建立与维护需要投资 以上投资将分摊到重用这些构件的新系统成本中。重用次数越多,分摊成本越少。第9页,共38页。3. 软件重用记:Lt = Total length of code ( # of lines) Ln = Length of ne

8、w code Lr = Length of reused code Et 、En、 Er are the corresponding efforts ( # of m-d) 重用率(Reusability)与生产率(Productivity)ProductivityReusability =开发代码的生产率重用新代码的生产率第10页,共38页。3. 软件重用重用技术:指利用可重用的构件开发软件的技术,及开发可重用软件的技术。 软件组合技术: 底层部件库法(Bottom-up compositional reuse) :从可重用的代码部件库(reuse repository)中选用部件,组合成软

9、件。A:是,前提条件为CnCr ,即重用比新开发效率高。Q:是否R 越高P就越高?第11页,共38页。Lucent Technologies initiated a companywide program to reuse software components (McClure 1997). As a consequence, the Workstation Software Development Department formed a Reuse Council to devise a strategy for selecting candidate components for its

10、 reuse repository. The Council was comprised of seven people, representing all groups in the department. The Council created an inventory of components and formed a matrix with the features of all past and planned projects. Then, each feature was rated in terms of whether it had been implemented and

11、 was still needed, had been implemented but was no longer needed, or had not been implemented but was still needed. Those features that were needed and were common to more than one project were targeted for reuse. In fact, some were redesigned to make them more reusable.The Council met every week fo

12、r 2 hours to make component selections, inspect design documentation for those components already in the repository, and to monitor the levels of reuse in the departments projects.3. 软件重用例: 上层组合法:完整程序的组合第12页,共38页。3. 软件重用 软件生成技术: 按照形式化的软件功能描述和一定的生成机理,由生成器系统(generator system)自动生成目标程序。重用的是generator 的代码

13、规则 OO重用技术:Class component的重用(详见下文) 类构件(Class component):可重用的软构件应具备的特点: 独立、可塑、接口清晰(文档详尽)第13页,共38页。3. 软件重用重用方式: 实例重用(instance reuse black-box reuse): 创建class的不同instances,通过messages完成 不同的任务。是最基本的重用方式。 用几个简单的objects创建出更复杂的class, 是实例重用的另一种形式 继承重用(inheritance reuse):是一种安全地裁剪已有的class component的方式。 多态重用(pol

14、ymorphism reuse): Parent class与child class有相同的对外接口,使 消息连接的复杂度降低。第14页,共38页。3. 软件重用注意:有些操作可能会妨碍class component的重用,如 与表示方法有关的操作 与数据结构、大小有关的操作 与外部设备有关的操作 实现算法在将来可能会改进改变的核心操作解决方法:将这些操作分离出来,作为适配接口(adaptive interface),使class中其它操作通过调用AI而实现。在不同应用环境下,用户只须重新定义AI操作就可以重用class。第15页,共38页。3. 软件重用Adaptive Interface还

15、可进一步细分为 转换接口(transition interface):重用时必须重定义与表示方法、数据结构、硬件等有关的操作(例如C+中class 里的 pure virtual function) 扩充接口(expansion interface):一个操作可由多种算法实现,若无新算法则继承老算法。第16页,共38页。IPO问题域Application Domain人机交互Human-ComputerInterface(HCI)任务管理TaskManagement数据管理DataManagementMethodAttributeStructureClass-&-ObjectCategory4

16、. 系 统 分 解回顾SD:从DFD出发 OOD模型分解:第17页,共38页。4. 系 统 分 解1、子系统之间的交互方式(collaboration) 客户-供应商(client-server)关系: 平等伙伴(peer-to-peer)关系:ClientsubsystemcontractServersubsystemrequestcontractPeersubsystemcontractPeersubsystemrequestrequest第18页,共38页。4. 系 统 分 解2、系统组织方案 水平层次组织: 将系统组织成hierarchy,同一层中的objects相互独立,而上、下层间

17、有 client-server关系。 一个client只能调用其相邻下层的server 封闭式(closed) 一个client可调用其下任一层的server 开放式(open) 优点:高效; 缺点:修改影响面广第19页,共38页。HCI典型应用系统的组织结构应 用 软 件 包操 作 系 统计 算 机 硬 件人机对话控制仿真软件包图形处理窗口图形屏幕图形象素图形4. 系 统 分 解 垂直块组织: 将系统垂直分解成若干独立的子系统,一个子系统相当于一块,每块提供一种类型的服务。第20页,共38页。4. 系 统 分 解3、四种子系统的设计 问题域子系统:基于OOA建立的object model,进

18、行补充修改。 调整需求 重用class: 选出可用的class,标出与本问题无关 的 attributes 和 methods 派生出child class,标出继承的attributes 和 methods 修改关联 组合class:通过引入root class完成,用于建立public protocol。 调整inheritance。第21页,共38页。 HCI子系统:好的包装4. 系 统 分 解 设计准则: 一致性: 术语、步骤、操作等始终一致。 减少步骤:使完成一件任务所需敲键盘、点鼠标、下拉菜单等的次数都减至最少。 及时提供反馈信息:提供hot key操作做一个体贴的status b

19、ar 提供撤销(undo)命令: 无须记忆:不应要求用户记住某个窗口的信息,然后再用到窗口中 这是系统的责任而不是用户的任务。仁慈的你如佛祖对众生:回头是岸 易学:提供HELP、联机参考等。 富有吸引力第22页,共38页。4. 系 统 分 解 设计策略 设计HCI类:例如VC提供的MFC类库(Microsoft Foundation Class Library) 将用户分类(按技能、职务等) 描述用户的类型、水平、使用目的、其它特征(如年龄、性别、习惯等),写出操作脚本 设计命令层次:注意同用户熟悉的方式( 如windows界面)尽量保持一致. 次序、深度、宽度调整适当第23页,共38页。4.

20、 系 统 分 解 任务管理子系统:基于OOA建立的dynamic model 分析并发性: 若两个objects之间无交互行为,或它们同时接受events,则它们本质上是并发的(synchronous) 考察event flow diagram,找出没有并发对象的路径(称为控制线),每条对应一个任务(task,亦称process) 不同的tasks对应必须同时发生的不同行为第24页,共38页。4. 系 统 分 解 确定task类型,并分配给适当的软硬件去执行 事件驱动型(event-driven):主要完成通信工作。 event = 数据到达的 interrupt 时钟驱动型(clock-dr

21、iven):完成周期性工作。 优先型(priority):将high priority或 low priority的任务专门分离出来先做或后做。 关键任务(key task):指关系系统成败的处理,要求高可靠性,应分离考虑,严格测试。 协调任务(coordinator):当系统中存在三个以上tasks时,应增设一个协调任务,用于封装不同tasks之间的协调控制。第25页,共38页。4. 系 统 分 解 数据管理子系统: 选择管理模式 文件管理(file manager)系统 关系数据库(Relational Data Base)管理系统 面向对象数据库(OODB)管理系统 设计数据格式及相应的

22、服务(请参阅教材p.252 - 255)第26页,共38页。5. 设计类中的服务 细化object model中的 methods1、确立服务 从 dynamic model出发:Event flow diagram中 Event = message ; 接受message 的object 必有对应的 method; Method 改变 status(即 attributes),并完成 action。第27页,共38页。5. 设计类中的服务Event Status 1 do: Action 1 Status 2 do: Action 2 则算法应有DO_CASE型控制 从function mo

23、del出发:DFD的一般结构是IPO注意:Action (即算法)与status 有关。例如:不同status接受同一个 event 时,其action不同 第28页,共38页。Input FlowClassProcessI O ClassProcess5. 设计类中的服务 若 Process=从Input Flow中抽取一个值,则IO 若 和 类型相同,而output实质上是input的另一个状态,则IO是一类, 有 若 则I1I2I3POOutput Flow ClassProcess第29页,共38页。5. 设计类中的服务 若 则 ProcessStorageStorage ClassP

24、rocess 对照DFD与Class-&-Object图,若一个process涉及多个classes,则必须判断它属于哪一个class。 例如:ActivatorReceiverProcess若Process 改变了 Receiver,则Receiver ClassProcess又如:从关联上看,process所涉及的所有classes中,处于中心地位的class,一般拥有该process。第30页,共38页。5. 设计类中的服务2、设计实现方法 算法设计:要求做到易修改,并且复杂度低(即效率高) 易理解,易实现。 数据结构设计:需要考虑具体的物理结构的选择。 新添用于存放内部处理中间结果的c

25、lass;引入新的低层操作,进一步细化。第31页,共38页。6. 设计关联1、单向关联 例: 雇 员公 司被雇用1+ 由雇员找其所属公司,则设雇主为其属性,即一单向指针雇 员雇主公 司 由公司找其下属某一雇员,则有两种方法:方法1:遍历所有雇员,找雇主匹配且满足特征的雇员。(省空间)第32页,共38页。6. 设计关联方法2:设公司的属性雇员为一指针集。(快速)雇 员公 司雇员指针集2、双向关联方法1:将上述两种单向关联结合使用雇 员雇主公 司雇员指针集雇 员公 司关联类雇主雇员工资方法2:另设关联类(特别适用于链属性)第33页,共38页。雇 员公 司find_skill雇 用1+技 能具有技能1+1+7. 优 化1、确定优先级: 必须站在全局高度确定各项质量指标的优先级,在优化设计时制定折衷方案。切忌各子系统自以为是,导致最终优化目标对立。 最常见的情况是在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论