《面向对象设计 》PPT课件.ppt
《《面向对象设计 》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《面向对象设计 》PPT课件.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十一章第十一章 面向对象设计面向对象设计(Object-Oriented Design)1.OOD准则:优秀软件设计的一个重要特点是容准则:优秀软件设计的一个重要特点是容易维护易维护回顾:回顾:SD准则包括准则包括 Modularization Abstraction Information hiding Module independence对于对于 OOD有类似的有类似的准则:准则:1、Module=Object1.OOD准则准则 Procedure abstraction:在在SD中已讨论中已讨论 Data abstraction:Class即是一种抽象数据类型。外界无须即是一种抽象数
2、据类型。外界无须知道实现方法就可按照类协议知道实现方法就可按照类协议(class description protocol)*使用使用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 Bud
3、d An Introduction to Object-Oriented Programming Addison-Wesley Publishing Company,Inc.19912、Abstraction:抽出事物的本质特性:抽出事物的本质特性,暂不考虑暂不考虑其细节,使设计从具体实现方法中超脱。其细节,使设计从具体实现方法中超脱。1.OOD准则准则例:例:C+中的中的“模板模板”(template)template class array_n private:T items n;/定义了定义了T类型的向量元素共类型的向量元素共n个个 ;main()array_n w;/w是有是有1000
4、个元素的复向量个元素的复向量 1.OOD准则准则3、Information hiding=Encapsulation of object4、Coupling:交互耦合交互耦合(interactive coupling):通过传递通过传递message发发生要求生要求 降低参数个数和参数复杂性降低参数个数和参数复杂性 减少减少objects发送发送 接收接收message的个数的个数 as loose as possible 继承耦合继承耦合(inheritance coupling):要求要求 Parent class IS_A child class as high as possible1
5、.OOD准则准则 一般一般-特殊内聚特殊内聚(general-particular cohesion):High g-p cohesion High inheritance coupling5、Cohesion:服务内聚服务内聚(service cohesion):一个服务只完成一个功一个服务只完成一个功能。能。类内聚类内聚(class cohesion):一个类只有一个用途,否则一个类只有一个用途,否则分解之。分解之。6、Reusability(详见详见3)2.启发式规则启发式规则1、设计结果清晰易懂,应做到:、设计结果清晰易懂,应做到:用词一致用词一致 按习惯用法命名。不同按习惯用法命名。
6、不同classes中中相似的相似的methods最好取同一名字。最好取同一名字。使用已有的使用已有的protocol。尽量减少尽量减少message模式的数目。模式的数目。避免模糊定义。避免模糊定义。2、一般、一般-特殊结构的深度应适当(约特殊结构的深度应适当(约100个个classes,则则设计设计72层)层)2.启发式规则启发式规则3、设计简单的、设计简单的class(定义不超过一页纸或两屏)。(定义不超过一页纸或两屏)。应注意:应注意:避免过多避免过多attributes;能用简单的语句描述一个能用简单的语句描述一个class的任务;的任务;objects之间合作关系要简单;之间合作关系
7、要简单;避免过多避免过多methods(7个个)。问题:设计出大量的问题:设计出大量的classes,使结构复杂度增加。,使结构复杂度增加。解决:划分主题,提高可理解性。解决:划分主题,提高可理解性。4、使用简单的、使用简单的protocol,减少,减少message 中传递的中传递的 parameters5、使用简单的、使用简单的method(CASE 可考虑用可考虑用 inheritance替代替代)。6、把设计变动减至最小。、把设计变动减至最小。1、概念:、概念:知识重用(例如软件工程知识的重用)知识重用(例如软件工程知识的重用)方法和标准重用(例如方法和标准重用(例如OO方法和国家规定
8、方法和国家规定的软件开发规范的重用)的软件开发规范的重用)软件成分软件成分的重用的重用3.软件重用软件重用(Software Reuse)知识知识工程工程 源码剪贴源码剪贴 无法溯源,无配置管理无法溯源,无配置管理 Include Include 修改后所有包含了此段代码的程修改后所有包含了此段代码的程序都须重新编译。序都须重新编译。Inheritance 无须改动原有代码无须改动原有代码 想象一下,想象一下,stdio.h 被改动之后被改动之后重用软件成分有三个级别:重用软件成分有三个级别:代码重用:代码重用:3.软件重用软件重用 设计重用设计重用 当移植系统时当移植系统时 分析重用分析重用
9、 当需求未变,而系统结构改变时当需求未变,而系统结构改变时(例如将(例如将HDIS改为改为OO实现)实现)2、重用效果的衡量:、重用效果的衡量:额外代价:额外代价:创建可重用成分的专门投资创建可重用成分的专门投资 多花多花2 4倍时间测试以保证质量倍时间测试以保证质量 构件库的建立与维护需要投资构件库的建立与维护需要投资 以上投资将分摊到重用这些构件的新系统成以上投资将分摊到重用这些构件的新系统成本中。重用次数越多,分摊成本越少。本中。重用次数越多,分摊成本越少。3.软件重用软件重用记:记:Lt=Total length of code(#of lines)Ln=Length of new c
10、ode Lr=Length of reused code Et、En、Er are the corresponding efforts(#of m-d)重用率重用率(Reusability)与生产率与生产率(Productivity)ProductivityReusability=开发代码的开发代码的生产率生产率重用新代码的重用新代码的生产率生产率3.软件重用软件重用重用技术:指利用可重用的构件开发软件的技重用技术:指利用可重用的构件开发软件的技术,及开发可重用软件的技术。术,及开发可重用软件的技术。软件组合技术:软件组合技术:底层部件库法底层部件库法(Bottom-up compositio
11、nal reuse):从可重用的代码部件库从可重用的代码部件库(reuse repository)中选中选用部件,组合成软件。用部件,组合成软件。A:是,前提条件为:是,前提条件为CnCr,即重用比新开发效率高。即重用比新开发效率高。Q:是否:是否R 越高越高P就越高?就越高?Lucent Technologies initiated a companywide program to reuse software components(McClure 1997).As a consequence,the Workstation Software Development Department f
12、ormed a Reuse Council to devise a strategy for selecting candidate components for its 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 proj
13、ects.Then,each feature was rated in terms of whether it had been implemented and 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,so
14、me were redesigned to make them more reusable.The Council met every week for 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.软件重用软件重用例:例:上层组合法上层组合法:完整程序的组合完整程序的组合3.软件重用软件
15、重用 软件生成技术:软件生成技术:按照形式化的软件功能描述和一定的生成机按照形式化的软件功能描述和一定的生成机理,由生成器系统理,由生成器系统(generator system)自动生成目标程自动生成目标程序。重用的是序。重用的是generator 的代码规则的代码规则 OO重用技术:重用技术:Class component的重用(详见下文)的重用(详见下文)类构件类构件(Class component):可重用的软构件应具备的特点:可重用的软构件应具备的特点:独立、可塑、接口清晰(文档详尽)独立、可塑、接口清晰(文档详尽)3.软件重用软件重用重用方式:重用方式:实例重用实例重用(instan
16、ce reuse black-box reuse):创建创建class的不同的不同instances,通过,通过messages完成完成 不同的任务。是最基本的重用方式。不同的任务。是最基本的重用方式。用几个简单的用几个简单的objects创建出更复杂的创建出更复杂的class,是实例重用的另一种形式是实例重用的另一种形式 继承重用继承重用(inheritance reuse):是一种是一种安全地安全地裁剪已有的裁剪已有的class component的方式。的方式。多态重用多态重用(polymorphism reuse):Parent class与与child class有相同的对外接口,使
17、有相同的对外接口,使 消息连接的复杂度降低。消息连接的复杂度降低。3.软件重用软件重用注意:有些操作可能会妨碍注意:有些操作可能会妨碍class component的重用,如的重用,如 与表示方法有关的操作与表示方法有关的操作 与数据结构、大小有关的操作与数据结构、大小有关的操作 与外部设备有关的操作与外部设备有关的操作 实现算法在将来可能会改进实现算法在将来可能会改进改变的核心操作改变的核心操作解解决决方方法法:将将这这些些操操作作分分离离出出来来,作作为为适适配配接接口口(adaptive interface),使使class中中其其它它操操作作通通过过调调用用AI而而实实现现。在在不不同
18、同应应用用环环境境下下,用用户户只只须须重重新新定定义义AI操操作作就就可以重用可以重用class。3.软件重用软件重用Adaptive Interface还可进一步细分为还可进一步细分为 转换接口转换接口(transition interface):重用时必须重:重用时必须重定义与表示方法、数据结构、硬件等有关的操作定义与表示方法、数据结构、硬件等有关的操作(例如(例如C+中中class 里的里的 pure virtual function)扩充接口扩充接口(expansion interface):一个操作可由多:一个操作可由多种算法实现,若无新算法则继承老算法。种算法实现,若无新算法则继
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象设计 面向对象设计 PPT课件 面向 对象 设计 PPT 课件
限制150内