




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十一章第十一章 面向对象设计面向对象设计(Object-Oriented Design)(Object-Oriented Design)1. OOD准那么:优秀软件设计的一个重要特点准那么:优秀软件设计的一个重要特点是容易维护是容易维护回想:回想:SD准那么包括准那么包括 Modularization Abstraction Information hiding Module independence对于对于 OOD有类似的准那么:有类似的准那么: 1、Module = Object1. OOD准那么准那么 Procedure abstraction: 在在SD中已讨论中已讨论 Data a
2、bstraction: Class即是一种笼统数据类型。外界无须即是一种笼统数据类型。外界无须知道实现方法就可按照类协议知道实现方法就可按照类协议(class description protocol)* 运用运用class中定义的数据。中定义的数据。 Parameter abstraction: 将数据类型作为参数处置。将数据类型作为参数处置。* Class description protocol : The complete definition of all properties, features, and methods that are descriptive of any ob
3、ject that is an instance of a class. Timothy Budd 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
4、 ; / 定义了定义了T类型的向量元素共类型的向量元素共n个个 ;main ( ) array_n w ; /w是有是有1000个元素的复向量个元素的复向量 1. OOD准那么准那么3、Information hiding = Encapsulation of object4、Coupling: 交互耦合交互耦合(interactive coupling):经过传送经过传送message发生要求发生要求 降低参数个数和参数复杂性降低参数个数和参数复杂性 减少减少objects发送发送 接纳接纳message的个数的个数 as loose as possible 承继耦合承继耦合(inherit
5、ance coupling): 要求要求 Parent class IS_A child class as high as possible1. OOD准那么准那么 普通普通-特殊内聚特殊内聚general-particular cohesion): High g-p cohesion High inheritance coupling5、Cohesion: 效力内聚效力内聚(service cohesion):一个效力只完成一个:一个效力只完成一个功能。功能。 类内聚类内聚(class cohesion):一个类只需一个用途,否那么分解:一个类只需一个用途,否那么分解之。之。6、Reusab
6、ility(详见详见3)2. 启发式规那么启发式规那么1、设计结果明晰易懂,应做到:、设计结果明晰易懂,应做到: 用词一致用词一致 按习惯用法命名。不同按习惯用法命名。不同classes中中类似的类似的methods最好取同一名字。最好取同一名字。 运用已有的运用已有的protocol。 尽量减少尽量减少message方式的数目。方式的数目。 防止模糊定义。防止模糊定义。2、普通、普通-特殊构造的深度应适当约特殊构造的深度应适当约100个个classes,那那么设计么设计72层层2. 启发式规那么启发式规那么3、设计简单的、设计简单的class定义不超越一页纸或两屏。定义不超越一页纸或两屏。应
7、留意:应留意: 防止过多防止过多attributes; 能用简单的语句描画一个能用简单的语句描画一个class的义务;的义务; objects之间协作关系要简单;之间协作关系要简单; 防止过多防止过多methods( 7个个)。问题:设计出大量的问题:设计出大量的classes,使构造复杂度添加。,使构造复杂度添加。处理:划分主题,提高可了解性。处理:划分主题,提高可了解性。4、运用简单的、运用简单的protocol,减少,减少message 中传送中传送的的 parameters5、运用简单的、运用简单的method(CASE 可思索用可思索用 inheritance替替代代)。6、把设计变
8、动减至最小。、把设计变动减至最小。1、概念:、概念: 知识重用例如软件工程知识的重用知识重用例如软件工程知识的重用 方法和规范重用例如方法和规范重用例如OO方法和国家规定的软件开方法和国家规定的软件开发规范的重用发规范的重用 软件成分的重用软件成分的重用3. 软件重用软件重用 (Software Reuse)知识知识工程工程 源码剪贴源码剪贴 无法溯源,无配置管理无法溯源,无配置管理 Include Include 修正后一切包含了此段代码的程序都须重新编译。修正后一切包含了此段代码的程序都须重新编译。 Inheritance 无须改动原有代码无须改动原有代码 想象一下,想象一下,stdio.
9、h 被改动之后被改动之后重用软件成分有三个级别:重用软件成分有三个级别: 代码重用:代码重用:3. 软件重用软件重用 设计重用设计重用 当移植系统时当移植系统时 分析重用分析重用 当需求未变,而系统构造改动当需求未变,而系统构造改动时例如将时例如将HDIS改为改为OO实现实现2、重用效果的衡量:、重用效果的衡量: 额外代价:额外代价: 创建可重用成分的专门投资创建可重用成分的专门投资 多花多花2 4倍时间测试以保证质量倍时间测试以保证质量 构件库的建立与维护需求投资构件库的建立与维护需求投资 以上投资将分摊到重用这些构件的新系统本以上投资将分摊到重用这些构件的新系统本钱中。重用次数越多,分摊本
10、钱越少。钱中。重用次数越多,分摊本钱越少。3. 软件重用软件重用记:记:Lt = Total length of code ( # of lines) Ln = Length of new code Lr = Length of reused code Et 、En、 Er are the corresponding efforts ( # of m-d) 重用率重用率(Reusability)与消费率与消费率(Productivity)rnrnttEELLELProductivityReusability =trLL开发代码的消费率开发代码的消费率nnnELC 重用新代码的消费率重用新代码的
11、消费率rrrELC )R/CC(11CPrnn3. 软件重用软件重用重用技术:指利用可重用的构件开发软件的技重用技术:指利用可重用的构件开发软件的技术,及开发可重用软件的技术。术,及开发可重用软件的技术。 软件组合技术:软件组合技术: 底层部件库法底层部件库法(Bottom-up compositional reuse) :从可重用的代码部件库从可重用的代码部件库(reuse repository)中选用部件,组合成软件。中选用部件,组合成软件。A:是,前提条件为:是,前提条件为CnCr ,即重用比新开发效率高。即重用比新开发效率高。Q:能否:能否R 越高越高P就越高?就越高?Lucent T
12、echnologies 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 reuse repository. The Council was comprised of seven peopl
13、e, 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 was still needed, had been implemented but was no longer n
14、eeded, 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 for 2 hours to make component selections, inspect design docu
15、mentation for those components already in the repository, and to monitor the levels of reuse in the departments projects.3. 软件重用软件重用例:例: 上层组合法:完好程序的组合上层组合法:完好程序的组合3. 软件重用软件重用 软件生成技术:软件生成技术: 按照方式化的软件功能描画和一定的生成机按照方式化的软件功能描画和一定的生成机理,由生成器系统理,由生成器系统(generator system)自动生成目的程自动生成目的程序。重用的是序。重用的是generator 的代
16、码规那么的代码规那么 OO重用技术:重用技术:Class component的重用详见下文的重用详见下文 类构件类构件(Class component):可重用的软构件应具备的特点:可重用的软构件应具备的特点: 独立、可塑、接口明晰文档详尽独立、可塑、接口明晰文档详尽3. 软件重用软件重用重用方式:重用方式: 实例重用实例重用(instance reuse black-box reuse): 创建创建class的不同的不同instances,经过,经过messages完成完成 不同的义务。是最根本的重用方式。不同的义务。是最根本的重用方式。 用几个简单的用几个简单的objects创建出更复杂的
17、创建出更复杂的class, 是实例重用的另一种方式是实例重用的另一种方式 承继重用承继重用(inheritance reuse):是一种平安地裁剪已有的是一种平安地裁剪已有的class component的方式。的方式。 多态重用多态重用(polymorphism reuse): Parent class与与child class有一样的对外接口,使有一样的对外接口,使 音讯衔接的复杂度降低。音讯衔接的复杂度降低。3. 软件重用软件重用留意:有些操作能够会妨碍留意:有些操作能够会妨碍class component的重用,的重用,如如 与表示方法有关的操作与表示方法有关的操作 与数据构造、大小有
18、关的操作与数据构造、大小有关的操作 与外部设备有关的操作与外部设备有关的操作 实现算法在未来能够会改良实现算法在未来能够会改良改动的中心操作改动的中心操作处理方法:将这些操作分别出来,作为适配接口处理方法:将这些操作分别出来,作为适配接口(adaptive interface),使,使class中其它操中其它操作经过调用作经过调用AI而实现。在不同运用环而实现。在不同运用环境下,用户只须重新定义境下,用户只须重新定义AI操作就可操作就可以重用以重用class。3. 软件重用软件重用Adaptive Interface还可进一步细分为还可进一步细分为 转换接口转换接口(transition in
19、terface):重用时必需重定义与表示方法、数:重用时必需重定义与表示方法、数据构造、硬件等有关的操作据构造、硬件等有关的操作例如例如C+中中class 里的里的 pure virtual function 扩展接口扩展接口(expansion interface):一个操作可由多种算法实现,假设:一个操作可由多种算法实现,假设无新算法那么承继老算法。无新算法那么承继老算法。IPO问题域问题域Application Domain人机交互人机交互Human-ComputerInterface(HCI)义务管理义务管理TaskManagement数据管理数据管理DataManagementMet
20、hodAttributeStructureClass-&-ObjectCategory4. 系系 统统 分分 解解回想回想SD:从:从DFD出发出发 OOD模型分解:模型分解:4. 系系 统统 分分 解解1、子系统之间的交互方式、子系统之间的交互方式(collaboration) 客户客户-供应商供应商(client-server)关系:关系: 平等同伴平等同伴(peer-to-peer)关系:关系:ClientsubsystemcontractServersubsystemrequestcontractPeersubsystemcontractPeersubsystemrequest
21、request4. 系系 统统 分分 解解2、系统组织方案、系统组织方案 程度层次组织:程度层次组织: 将系统组织成将系统组织成hierarchy,同一层中的,同一层中的objects相相互独立,而上、下层间有互独立,而上、下层间有 client-server关系。关系。 一个一个client只能调用其相邻下层的只能调用其相邻下层的server 封锁式封锁式(closed) 一个一个client可调用其下任一层的可调用其下任一层的server 开放式开放式(open) 优点:高效;优点:高效; 缺陷:修正影响面广缺陷:修正影响面广HCI典型运用系统的组织构造典型运用系统的组织构造应应 用用 软
22、软 件件 包包操操 作作 系系 统统计计 算算 机机 硬硬 件件人机对人机对话控制话控制仿真仿真软件包软件包图形图形处置处置窗口图形窗口图形屏幕图形屏幕图形象素图形象素图形4. 系系 统统 分分 解解 垂直块组织:垂直块组织: 将系统垂直分解成假设干独立的子系统,一个将系统垂直分解成假设干独立的子系统,一个子系统相当于一块,每块提供一种类型的效力。子系统相当于一块,每块提供一种类型的效力。4. 系系 统统 分分 解解3、四种子系统的设计、四种子系统的设计 问题域子系统:基于问题域子系统:基于OOA建立的建立的object model,进展补充修正。进展补充修正。 调整需求调整需求 重用重用cl
23、ass: 选出可用的选出可用的class,标出与本问题无关,标出与本问题无关 的的 attributes 和和 methods 派生出派生出child class,标出承继的,标出承继的attributes 和和 methods 修正关联修正关联 组合组合class:经过引入:经过引入root class完成,用于建立完成,用于建立public protocol。 调整调整inheritance。 HCI子系统:好的包装子系统:好的包装4. 系系 统统 分分 解解 设计准那么:设计准那么: 一致性:一致性: 术语、步骤、操作等一直一致。术语、步骤、操作等一直一致。 减少步骤:使完成一件义务所需
24、敲键盘、点鼠标、下拉菜单等的次减少步骤:使完成一件义务所需敲键盘、点鼠标、下拉菜单等的次数都减至最少。数都减至最少。 及时提供反响信息:及时提供反响信息:提供提供hot key操作操作做一个体恤的做一个体恤的status bar 提供撤销提供撤销(undo)命令:命令: 无须记忆:不应要求用户记住某个窗口的信息,然后再用到窗口无须记忆:不应要求用户记住某个窗口的信息,然后再用到窗口中中 这是系统的责任而不是用户的义务。这是系统的责任而不是用户的义务。仁慈的他如佛祖对众生:回头是岸仁慈的他如佛祖对众生:回头是岸 易学:提供易学:提供HELP、联机参考、联机参考等。等。 富有吸引力富有吸引力4.
25、系系 统统 分分 解解 设计战略设计战略 设计设计HCI类:例如类:例如VC提供的提供的MFC类库类库(Microsoft Foundation Class Library) 将用户分类按技艺、职务等将用户分类按技艺、职务等 描画用户的类型、程度、运用目的、其它特征如年龄、性别、描画用户的类型、程度、运用目的、其它特征如年龄、性别、习惯等,写出操作脚本习惯等,写出操作脚本 设计命令层次:留意同用户熟习的方式设计命令层次:留意同用户熟习的方式( 如如windows界面尽界面尽量坚持一致量坚持一致. 次序、深度、宽度调整适当次序、深度、宽度调整适当4. 系系 统统 分分 解解 义务管理子系统:基于
26、义务管理子系统:基于OOA建立的建立的dynamic model 分析并发性:分析并发性: 假设两个假设两个objects之间无交互行为,或它们同时接受之间无交互行为,或它们同时接受events,那么它,那么它们本质上是并发的们本质上是并发的(synchronous) 调查调查event flow diagram,找出没有并发对象的途径称为控制线,找出没有并发对象的途径称为控制线,每条对应一个义务每条对应一个义务(task,亦称,亦称process) 不同的不同的tasks对应必需同时发生的不同行为对应必需同时发生的不同行为4. 系系 统统 分分 解解 确定确定task类型,并分配给适当的软类
27、型,并分配给适当的软硬件去执行硬件去执行 事件驱动型事件驱动型(event-driven):主要完成通讯任务。:主要完成通讯任务。 event = 数据到达的数据到达的 interrupt 时钟驱动型时钟驱动型(clock-driven):完成周期性任务。:完成周期性任务。 优先型优先型(priority):将:将high priority或或 low priority的义务专门分别出的义务专门分别出来先做或后做。来先做或后做。 关键义务关键义务(key task):指关系系统成败的处置,要求高可靠性,应分:指关系系统成败的处置,要求高可靠性,应分别思索,严厉测试。别思索,严厉测试。 协调义务
28、协调义务(coordinator):当系统中存在三个以上:当系统中存在三个以上tasks时,应增设一时,应增设一个协调义务,用于封装不同个协调义务,用于封装不同tasks之间的协调控制。之间的协调控制。4. 系系 统统 分分 解解 数据管理子系统:数据管理子系统: 选择管理方式选择管理方式 文件管理文件管理(file manager)系统系统 关系数据库关系数据库(Relational Data Base)管理系统管理系统 面向对象数据库面向对象数据库(OODB)管理系统管理系统 设计数据格式及相应的效力设计数据格式及相应的效力请参阅教材请参阅教材p.252 - 2555. 设计类中的效力设计
29、类中的效力 细化细化object model中的中的 methods1、确立效力、确立效力 从从 dynamic model出发:出发:Event flow diagram中中 Event = message ; 接受接受message 的的object 必有对应的必有对应的 method; Method 改动改动 status即即 attributes,并完成,并完成 action。5. 设计类中的效力设计类中的效力Event Status 1 do: Action 1 Status 2 do: Action 2 那么算法应有那么算法应有DO_CASE型控制型控制 从从function mo
30、del出发:出发:DFD的普通构造是的普通构造是IPO留意:留意:Action 即算法即算法与与status 有关。例有关。例如:不同如:不同status接接受同一个受同一个 event 时,时,其其action不同不同 Input FlowClassProcessI O ClassProcess5. 设计类中的效力设计类中的效力 假设假设 Process=从从Input Flow中抽取中抽取一个值,那么一个值,那么IO 假设假设 和和 类型一样,而类型一样,而output本质上是本质上是input的另一个形状,的另一个形状,那么那么IO是一类,是一类, 有有 假设假设 那么那么I1I2I3P
31、OOutput Flow ClassProcess5. 设计类中的效力设计类中的效力 假设假设 那么那么 ProcessStorageStorage ClassProcess 对照对照DFD与与Class-&-Object图,假设一个图,假设一个process涉及多个涉及多个classes,那么,那么必需判别它属于哪一个必需判别它属于哪一个class。 例如:例如:ActivatorReceiverProcess假设假设Process 改动了改动了 Receiver,那么那么Receiver ClassProcess又如:从关联上看,又如:从关联上看,process所涉及的一切所涉及的
32、一切classes中,中,处于中心位置的处于中心位置的class,普通拥有该普通拥有该process。5. 设计类中的效力设计类中的效力2、设计实现方法、设计实现方法 算法设计:要求做到易修正,并且复杂度低即算法设计:要求做到易修正,并且复杂度低即效率高效率高 易了解,易实现。易了解,易实现。 数据构造设计:需求思索详细的物理构造的选择。数据构造设计:需求思索详细的物理构造的选择。 新添用于存放内部处置中间结果的新添用于存放内部处置中间结果的class;引入新;引入新的低层操作,进一步细化。的低层操作,进一步细化。6. 设计关联设计关联1、单向关联、单向关联 例:例: 雇雇 员员公公 司司被雇
33、用被雇用1+ 由雇员找其所属公司,那么设由雇员找其所属公司,那么设雇主为其属性,即一单向指针雇主为其属性,即一单向指针雇雇 员员雇主雇主公公 司司 由公司找其下属某一雇员,那么有两种方法:由公司找其下属某一雇员,那么有两种方法:方法方法1:遍历一切雇员,找雇主匹配且满足特征的雇:遍历一切雇员,找雇主匹配且满足特征的雇员。省空间员。省空间6. 设计关联设计关联方法方法2:设公司:设公司的属性雇员为的属性雇员为一 指 针 集 。一 指 针 集 。快速快速雇雇 员员公公 司司雇员雇员指针集指针集2、双向关联、双向关联方法方法1:将上述两种单向:将上述两种单向关结合合运用关结合合运用雇雇 员员雇主雇主
34、公公 司司雇员雇员指针集指针集雇雇 员员公公 司司关联类关联类雇主雇主雇员雇员工资工资方法方法2:另设关联类特:另设关联类特别适用于链属性别适用于链属性雇雇 员员公公 司司find_skill雇雇 用用1+技技 能能具有技艺具有技艺1+1+7. 优优 化化1、确定优先级:、确定优先级: 必需站在全局高度确定各项质量目的的优先级,必需站在全局高度确定各项质量目的的优先级,在优化设计时制定折衷方案。切忌各子系统自以为在优化设计时制定折衷方案。切忌各子系统自以为是,导致最终优化目的对立。是,导致最终优化目的对立。 最常见的情况是在效率与明晰性之间的折衷。最常见的情况是在效率与明晰性之间的折衷。 2、提高效率的技术、提高效率的技术 添加关联类添加关联类例:设某公司有例:设某公司有2000名雇员,平均每名雇员会名雇员,平均每名雇员会10种技艺,其中有种技艺
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 船舶焊接工艺过程控制考核试卷及答案
- 小麦脱皮工艺考核试卷及答案
- 锦纶纤维纤维耐高温处理工艺考核试卷及答案
- 粮食经纪人基础知识考核试卷及答案
- 压电石英晶体研磨工三级安全教育(班组级)考核试卷及答案
- 山西省晋中市榆次区2024-2025学年八年级下册期末测评数学试卷含解析
- 注册安全工程师安全生产法测试卷附答案
- 市场调查及咨询服务公司合同付款管理办法
- 产品供货协议
- 应届生面试题库及答案
- 第一单元 第2课《童真时光》 【人教版】美术 三年级上册
- 广州市公安局天河分局招聘辅警考试真题2024
- 2025年全国货运驾驶员职业技能资格考试试题(基础知识)含答案
- GB/T 46150.2-2025锅炉和压力容器第2部分:GB/T 46150.1的符合性检查程序要求
- 2025年甘肃省高考历史真题卷含答案解析
- 中华优传统文化(慕课版)教案
- 2025广东广州市国资委选调公务员2人笔试模拟试题及答案解析
- 美容美发店2025年营销方案创新解析
- 经济效益证明(模板)
- 《企业年度培训计划制定》
- 医疗机构卫生技术人员名录
评论
0/150
提交评论