面向对象设计方法优秀PPT.ppt

上传人:石*** 文档编号:65766699 上传时间:2022-12-08 格式:PPT 页数:40 大小:2.86MB
返回 下载 相关 举报
面向对象设计方法优秀PPT.ppt_第1页
第1页 / 共40页
面向对象设计方法优秀PPT.ppt_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《面向对象设计方法优秀PPT.ppt》由会员分享,可在线阅读,更多相关《面向对象设计方法优秀PPT.ppt(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、面向对象设计方法面向对象设计方法第一页,本课件共有40页OODOOD概述概述OOA是提取和整理用户需求,并建立问题域精是提取和整理用户需求,并建立问题域精确模型的过程。而确模型的过程。而OOD则是将则是将OOA阶段得到的阶段得到的需求转变为符合成本和质量要求的、抽象的系统需求转变为符合成本和质量要求的、抽象的系统实现方案的过程。实现方案的过程。尽管两个的任务不同,但是两者之间并没有尽管两个的任务不同,但是两者之间并没有明确的界限。许多分析的结果可以直接映射成明确的界限。许多分析的结果可以直接映射成设计的结果,而设计过程中往往会加深对需求设计的结果,而设计过程中往往会加深对需求的理解,从而进一步

2、完善分析结果。的理解,从而进一步完善分析结果。第二页,本课件共有40页第九章第九章 面向对象设计面向对象设计&91 OOD准则准则&92 启发式规则启发式规则&93 软件重用软件重用(Software Reuse)&94 系统分解系统分解&95 设计类中的服务设计类中的服务&96 设计关联设计关联&97 优化优化&98 本章重点本章重点第三页,本课件共有40页91 OOD准则准则优秀软件设计的一个重要特点是容易维护优秀软件设计的一个重要特点是容易维护。回顾:回顾:SDSD准则包括准则包括 模块化模块化 抽象抽象 信息隐藏信息隐藏 模块独立模块独立&对于 OOD有类似的准则:1、Module=O

3、bject第四页,本课件共有40页OODOOD准则(续)准则(续)Procedure abstraction:在在SD中已讨论中已讨论 Data abstraction:Class即是一种抽象数据类型。即是一种抽象数据类型。外界无须知道实现方法就可按照类协议外界无须知道实现方法就可按照类协议(class description protocol)*使用使用class中定义的数据。中定义的数据。Parameter abstraction:将数据类型作为参数处理。将数据类型作为参数处理。2、Abstraction:抽出事物的本质特性:抽出事物的本质特性,暂不考虑其暂不考虑其细节,使设计从具体实现方

4、法中超脱。细节,使设计从具体实现方法中超脱。第五页,本课件共有40页OODOOD准则(续)准则(续)例:例:C+中的中的“模板模板”(template)template class array_n private:T items n;/定义了定义了T类型的向量元素共类型的向量元素共n个个 ;main()array_n w;/w是有是有1000个元素的复向量个元素的复向量 第六页,本课件共有40页OODOOD准则(续)准则(续)3、Information hiding=Encapsulation of object4、耦合(、耦合(Coupling):交互耦合交互耦合(interactive c

5、oupling):通过传递通过传递message发生发生要求要求 降低参数个数和参数复杂性降低参数个数和参数复杂性 减少减少objects发送发送 接收接收message的个数的个数 as loose as possible 继承耦合继承耦合(inheritance coupling):要求要求 Parent class IS_A child class as high as possible第七页,本课件共有40页OODOOD准则(续)准则(续)一般一般-特殊内聚(特殊内聚(general-particular cohesion):High g-p cohesion High inherit

6、ance coupling5、Cohesion:服务内聚服务内聚(service cohesion):一个服务只完成一个功:一个服务只完成一个功能。能。类内聚类内聚(class cohesion):一个类只有一个用途,否则分:一个类只有一个用途,否则分解之。解之。6、可重用、可重用Reusability(详见详见113)第八页,本课件共有40页92 启发式规则启发式规则1、设计结果清晰易懂,应做到:、设计结果清晰易懂,应做到:用词一致用词一致 按习惯用法命名。不同按习惯用法命名。不同classes中相似的中相似的methods最好取同一名字。最好取同一名字。使用已有的使用已有的protocol

7、。尽量减少尽量减少message模式的数目。模式的数目。避免模糊定义。避免模糊定义。2、一般、一般-特殊结构的深度应适当(约特殊结构的深度应适当(约100个个classes,则设计则设计72层)层)第九页,本课件共有40页启发式规则(续)启发式规则(续)3、设计简单的、设计简单的class(定义不超过一页纸或两屏)。应(定义不超过一页纸或两屏)。应注意:注意:避免过多避免过多attributes;能用简单的语句描述一个能用简单的语句描述一个class的任务;的任务;objects之间合作关系要简单;之间合作关系要简单;避免过多避免过多methods(7个个)。问题:设计出大量的问题:设计出大量

8、的classes,使结构复杂度增加。,使结构复杂度增加。解决:划分主题,提高可理解性。解决:划分主题,提高可理解性。4、使用简单的协议(、使用简单的协议(protocol),减少,减少message 中中传递的传递的 parameters5、使用简单的、使用简单的method(CASE 可考虑用可考虑用 inheritance替代替代)。6、把设计变动减至最小。、把设计变动减至最小。第十页,本课件共有40页93 软件重用软件重用(Software Reuse)一、重用的概念:一、重用的概念:知识重用(例如软件工程知识的重用)知识重用(例如软件工程知识的重用)方法和标准重用(例如方法和标准重用(

9、例如OO方法和国家规定的软件方法和国家规定的软件开发规范的重用)开发规范的重用)软件成分软件成分的重用的重用知识知识工程工程 源码剪贴源码剪贴 无法溯源,无配置管理无法溯源,无配置管理 Include Include 修改后所有包含了此段代码的程序修改后所有包含了此段代码的程序都须重新编译。都须重新编译。Inheritance 无须改动原有代码无须改动原有代码 想象一下,想象一下,stdio.h 被改动之后被改动之后重用软件成分有三个级别:重用软件成分有三个级别:代码重用:代码重用:第十一页,本课件共有40页一、重用的概念一、重用的概念(续)(续)设计重用设计重用 当移植系统时当移植系统时 分

10、析重用分析重用 当需求未变,而系统结构改变当需求未变,而系统结构改变时时二、重用效果的衡量:二、重用效果的衡量:额外代价:额外代价:创建可重用成分的专门投资创建可重用成分的专门投资 多花多花2 4倍时间测试以保证质量倍时间测试以保证质量 构件库的建立与维护需要投资构件库的建立与维护需要投资 以上投资将分摊到重用这些构件的新系统以上投资将分摊到重用这些构件的新系统成本中。重用次数越多,分摊成本越少。成本中。重用次数越多,分摊成本越少。第十二页,本课件共有40页二、重用效果的衡量二、重用效果的衡量(续续):记:记:Lt=程序总长度程序总长度(#of lines)Ln=新编代码长度新编代码长度 Lr

11、=重用代码长度重用代码长度 Et、En、Er 总、新编、重用工作量总、新编、重用工作量 重用率与生产率的关系重用率与生产率的关系ProductivityReusability=开发代码的生产率开发代码的生产率重用新代码的生产率重用新代码的生产率第十三页,本课件共有40页二、重用效果的衡量二、重用效果的衡量(续续):三、软件重用技术三、软件重用技术:指利用可重用的构件开:指利用可重用的构件开发软件的技术,及开发可重用软件的技术。发软件的技术,及开发可重用软件的技术。软件组合技术:软件组合技术:底层部件库法底层部件库法(Bottom-up compositional reuse):从可重用的代码部

12、件库从可重用的代码部件库(reuse repository)中中选用部件,组合成软件。选用部件,组合成软件。A:是,前提条件为:是,前提条件为CnCr,即重用比新开发效率高。即重用比新开发效率高。Q:是否:是否R 越高越高P就越高?就越高?上层组合法上层组合法:完整程序的组合完整程序的组合第十四页,本课件共有40页三、软件重用技术三、软件重用技术(续续):软件生成技术:软件生成技术:按照形式化的软件功能描述和一定的生成机理,按照形式化的软件功能描述和一定的生成机理,由生成器系统由生成器系统(generator system)自动生成目标程序。重用自动生成目标程序。重用的是的是generator

13、 的代码规则的代码规则 OO重用技术:重用技术:Class component的重用(详见下文)的重用(详见下文)类构件类构件(Class component):可重用的软构件应具备的特点:可重用的软构件应具备的特点:独立、可塑、接口清晰(文档详尽)独立、可塑、接口清晰(文档详尽)第十五页,本课件共有40页三、软件重用技术三、软件重用技术(续续):重用方式:重用方式:实例重用实例重用(instance reuse black-box reuse):创建创建class的不同的不同instances,通过通过messages完成完成 不同的任务。是最基本的重用方式。不同的任务。是最基本的重用方式。

14、用几个简单的用几个简单的objects创建出更复杂的创建出更复杂的class,是实例重用的另一种形式是实例重用的另一种形式 继承重用继承重用(inheritance reuse):是一种是一种安全地安全地裁剪已有的裁剪已有的class component的方式。的方式。多态重用多态重用(polymorphism reuse):Parent class与与child class有相同的对外接口,使有相同的对外接口,使 消息连接的复杂度降低。消息连接的复杂度降低。第十六页,本课件共有40页三、软件重用技术三、软件重用技术(续续):注意:有些操作可能会妨碍注意:有些操作可能会妨碍class comp

15、onent的重用,如的重用,如 与表示方法有关的操作与表示方法有关的操作 与数据结构、大小有关的操作与数据结构、大小有关的操作 与外部设备有关的操作与外部设备有关的操作 实现算法在将来可能会改进实现算法在将来可能会改进改变的核心操作改变的核心操作解解决决方方法法:将将这这些些操操作作分分离离出出来来,作作为为适适配配接接口口(adaptive interface),使使class中中其其它它操操作作通通过过调调用用AI而而实实现现。在在不不同同应应用用环环境境下下,用用户户只只须须重重新新定定义义AI操操作作就就可可以以重重用用class。第十七页,本课件共有40页三、软件重用技术三、软件重用

16、技术(续续):Adaptive Interface还可进一步细分为还可进一步细分为 转换接口转换接口(transition interface):重用时必须重定义:重用时必须重定义与表示方法、数据结构、硬件等有关的操作与表示方法、数据结构、硬件等有关的操作(例如(例如C+中中class 里的里的 pure virtual function)扩充接口扩充接口(expansion interface):一个操作可由多种:一个操作可由多种算法实现,若无新算法则继承老算法。算法实现,若无新算法则继承老算法。第十八页,本课件共有40页94 系统分解系统分解IPO问题域问题域Application Dom

17、ain人机交互人机交互Human-ComputerInterface(HCI)任务管理任务管理TaskManagement数据管理数据管理DataManagementMethodAttributeStructureClass-&-ObjectCategory回顾回顾SD:从:从DFD出发出发 OOD模型分解:模型分解:第十九页,本课件共有40页一、子系统之间的交互方式一、子系统之间的交互方式(collaboration)(collaboration)客户客户-供应商供应商(client-server)关系:关系:平等伙伴平等伙伴(peer-to-peer)关系:关系:Clientsubsyst

18、emcontractServersubsystemrequestcontractPeersubsystemcontractPeersubsystemrequestrequest第二十页,本课件共有40页二、系统组织方案二、系统组织方案 水平层次组织:水平层次组织:将系统组织成层次,同一层中的将系统组织成层次,同一层中的objects相互独立,相互独立,而上、下层间有而上、下层间有 client-server关系。关系。一个一个client只能调用其相邻下层的只能调用其相邻下层的server 封闭封闭式式(closed)一个一个client可调用其下任一层的可调用其下任一层的server 开放开

19、放式式(open)优点:高效;优点:高效;缺点:修改影响面广缺点:修改影响面广第二十一页,本课件共有40页二、系统组织方案(续)二、系统组织方案(续)典型应用系统的组织结构典型应用系统的组织结构 垂直块组织:垂直块组织:将系统垂直分解成若干独立的子系统,一个子系统将系统垂直分解成若干独立的子系统,一个子系统相当于一块,每块提供一种类型的服务。相当于一块,每块提供一种类型的服务。HCI应应 用用 软软 件件 包包操操 作作 系系 统统计计 算算 机机 硬硬 件件人机对人机对话控制话控制仿真仿真软件包软件包图形图形处理处理窗口图形窗口图形屏幕图形屏幕图形象素图形象素图形第二十二页,本课件共有40页

20、三、四种子系统的设计三、四种子系统的设计 问题域子系统:基于问题域子系统:基于OOA建立的建立的object model,进,进行补充修改。行补充修改。调整需求调整需求 重用重用class:选出可用的选出可用的class,标出与本问题无关,标出与本问题无关 的的 attributes 和和 methods 派生出派生出child class,标出继承的,标出继承的attributes 和和 methods 修改关联修改关联 组合组合class:通过引入:通过引入root class完成,用于建立完成,用于建立public protocol。调整调整inheritance。第二十三页,本课件共有

21、40页三、四种子系统的设计三、四种子系统的设计(续续)HCI子系统:好的包装子系统:好的包装 设计准则:设计准则:一致性:一致性:术语、步骤、操作等始终一致。术语、步骤、操作等始终一致。减少步骤:使完成一件任务所需敲键盘、点鼠减少步骤:使完成一件任务所需敲键盘、点鼠标、下拉菜单等的次数都减至最少。标、下拉菜单等的次数都减至最少。及时提供反馈信息:及时提供反馈信息:提供提供hot key操作操作做一个体贴的做一个体贴的status bar 提供撤销提供撤销(undo)命令:命令:无须记忆:不应要求用户记住某个窗口的信息,然后无须记忆:不应要求用户记住某个窗口的信息,然后再用到窗口中再用到窗口中

22、这是系统的责任而不是用户的任这是系统的责任而不是用户的任务。务。仁慈的你如佛祖对众生:回头是岸仁慈的你如佛祖对众生:回头是岸 易学:提供易学:提供HELP、联、联机参考等。机参考等。富有吸引力富有吸引力第二十四页,本课件共有40页三、四种子系统的设计三、四种子系统的设计(续续)设计策略设计策略 设设计计HCI类类:例例如如VC提提供供的的MFC类类 库库(Microsoft Foundation Class Library)将用户分类(按技能、职务等)将用户分类(按技能、职务等)描述用户的类型、水平、使用目的、其它特征(如描述用户的类型、水平、使用目的、其它特征(如年龄、性别、习惯等),写出操

23、作脚本年龄、性别、习惯等),写出操作脚本 设计命令层次:注意同用户熟悉的方式设计命令层次:注意同用户熟悉的方式(如如windows界面)尽量保持一致界面)尽量保持一致.次序、深度、次序、深度、宽度调整适当宽度调整适当第二十五页,本课件共有40页三、四种子系统的设计三、四种子系统的设计(续续)任务管理子系统:基于任务管理子系统:基于OOA建立的建立的dynamic model 分析并发性:分析并发性:若两个若两个objects之间无交互行为,或它们同时接受之间无交互行为,或它们同时接受events,则它们本质上是,则它们本质上是并发的并发的(synchronous)考察考察event flow

24、diagram,找出没有并发对象的路径,找出没有并发对象的路径(称为(称为控制线控制线),每条对应一个),每条对应一个任务任务(task,亦称,亦称process)不同的不同的tasks对应必须同时发生的不同行为对应必须同时发生的不同行为第二十六页,本课件共有40页三、四种子系统的设计三、四种子系统的设计(续续)确定确定task类型,并分配给适当的软类型,并分配给适当的软硬件去执行硬件去执行 事件驱动型事件驱动型(event-driven):主要完成通信工作。:主要完成通信工作。event=数据到达的数据到达的 interrupt 时钟驱动型时钟驱动型(clock-driven):完成周期性工

25、作。:完成周期性工作。优优先先型型(priority):将将high priority或或 low priority的的任务专门分离出来先做或后做。任务专门分离出来先做或后做。关关键键任任务务(key task):指指关关系系系系统统成成败败的的处处理理,要要求高可靠性,应分离考虑,严格测试。求高可靠性,应分离考虑,严格测试。协协调调任任务务(coordinator):当当系系统统中中存存在在三三个个以以上上tasks时时,应应增增设设一一个个协协调调任任务务,用用于于封封装装不不同同tasks之间的协调控制。之间的协调控制。第二十七页,本课件共有40页三、四种子系统的设计三、四种子系统的设计

26、(续续)数据管理子系统:数据管理子系统:选择管理模式选择管理模式 文件管理文件管理(file manager)系统系统 关系数据库关系数据库(Relational Data Base)管理系统管理系统 面向对象数据库面向对象数据库(OODB)管理系统管理系统 设计数据格式及相应的服务设计数据格式及相应的服务第二十八页,本课件共有40页95 设计类中的服务设计类中的服务一、确立服务一、确立服务 从从 dynamic model出发:出发:Event flow diagram中中 Event=message;接受接受message 的的object 必有对应的必有对应的 method;Method

27、 改变改变 status(即(即 attributes),并完成),并完成 action。第二十九页,本课件共有40页一、确立服务一、确立服务(续续)Event Status 1 do:Action 1 Status 2 do:Action 2 则算法应有则算法应有DO_CASE型控制型控制 从从function model出发:出发:DFD的一般结构是的一般结构是IPO注意:注意:Action(即算法)与(即算法)与status 有关。例如:有关。例如:不同不同status接受同一接受同一个个 event 时,其时,其action不同不同 第三十页,本课件共有40页一、确立服务一、确立服务(

28、续续)Input FlowClassProcessI O ClassProcess 若若 Process=从从Input Flow中抽取一个值,则中抽取一个值,则IO 若若 和和 类型相同,而类型相同,而output实质上是实质上是input的另一个状态,则的另一个状态,则IO是一类,是一类,有有 若若 则则I1I2I3POOutput Flow ClassProcess第三十一页,本课件共有40页一、确立服务一、确立服务(续续)若若 则则 ProcessStorageStorage ClassProcess 对照对照DFD与与Class-&-Object图,若一个图,若一个process涉及

29、多涉及多个个classes,则必须判断它属于哪一个,则必须判断它属于哪一个class。例如:例如:ActivatorReceiverProcess若若Process 改变了改变了 Receiver,则,则Receiver ClassProcess又如:从关联上看,又如:从关联上看,process所涉及的所有所涉及的所有classes中,中,处于中心地位的处于中心地位的class,一般拥有该一般拥有该process。第三十二页,本课件共有40页二、实现方法二、实现方法 算法设计:要求做到易修改,并且复杂度低(即效率算法设计:要求做到易修改,并且复杂度低(即效率高)高)易理解,易实现。易理解,易实

30、现。数据结构设计:需要考虑具体的物理结构的选择。数据结构设计:需要考虑具体的物理结构的选择。新添用于存放内部处理中间结果的新添用于存放内部处理中间结果的class;引入新的;引入新的低层操作,进一步细化。低层操作,进一步细化。第三十三页,本课件共有40页96 设计关联设计关联一、单向关联一、单向关联 例:例:雇雇 员员公公 司司被雇用被雇用1+由由雇员雇员找其所属找其所属公司公司,则设则设雇主雇主为其属性,即为其属性,即一一单向指针单向指针雇雇 员员雇主雇主公公 司司 由由公司公司找其下属某一找其下属某一雇员雇员,则有两种方法:,则有两种方法:方方法法1:遍遍历历所所有有雇雇员员,找找雇雇主主

31、匹匹配配且且满满足足特特征征的的雇雇员员。(省空间)(省空间)第三十四页,本课件共有40页一、单向关联(续)一、单向关联(续)方方法法2:设设公公司司的的属属性性雇雇员员为为一一 指指 针针 集集。(快速)(快速)雇雇 员员公公 司司雇员雇员指针集指针集二、双向关联二、双向关联方方法法1:将将上上述述两两种种单单向向关联结合使用关联结合使用雇雇 员员雇主雇主公公 司司雇员雇员指针集指针集雇雇 员员公公 司司关联类关联类雇主雇主雇员雇员工资工资方方法法2:另另设设关关联联类类(特特别别适用于链属性)适用于链属性)第三十五页,本课件共有40页97 优化优化雇雇 员员公公 司司find_skill雇

32、雇 用用1+技技 能能具有技能具有技能1+1+1、确定优先级:、确定优先级:必须站在必须站在全局全局高度确定各项质量指标的优先级,在高度确定各项质量指标的优先级,在优化设计时制定折衷方案。切忌各子系统自以为是,优化设计时制定折衷方案。切忌各子系统自以为是,导致最终优化目标对立。导致最终优化目标对立。最常见的情况是在最常见的情况是在效率效率与与清晰性清晰性之间的折衷。之间的折衷。2、提高效率的技术、提高效率的技术 增加关联(类)增加关联(类)例例:设设某某公公司司有有2000名名雇雇员员,平平均均每每名名雇雇员员会会10种种技技能能,其其中中有有5人人精精通通日日语语,现现要要查查询询公公司司中

33、中会会讲讲日日语的雇员是哪些人语的雇员是哪些人第三十六页,本课件共有40页雇雇 员员公公 司司精通语言精通语言1+语语言言1+方方法法1:嵌嵌套套查查询询 遍遍历历雇雇员员2000次次,而而对对每每个个雇雇员遍历员遍历技能技能10次。命中率为次。命中率为1/4000。方方法法2:用用Hash Table实实现现技技能能,使使“会会讲讲日日语语”对对应应唯一的技能对象,则命中率上升为唯一的技能对象,则命中率上升为1/400。方方法法3:增增加加一一个个额额外外的的限限定定关关联联“精精通通语语言言”,即即可可立刻查得结果。立刻查得结果。第三十七页,本课件共有40页 调整查询次序,优化算法调整查询

34、次序,优化算法 例如公司有例如公司有5名会日语的雇员,有名会日语的雇员,有200名会法语的雇名会法语的雇员。现要找日、法语均会的雇员,则应先找的员。现要找日、法语均会的雇员,则应先找的 雇员,再从中找雇员,再从中找 的雇员。的雇员。会日语会日语 会法语会法语 保留内部中间过程产生的派生属性。保留内部中间过程产生的派生属性。3、调整继承关系、调整继承关系 向上归纳向上归纳 向下派生向下派生建建立立这这样样的的索索引引必必然然多多占占空空间间,而而且且基基关关联联改改变变时时也也必必须须相相应应地地修修改改索索引引。因因此此,应应只只给给那那些些经经常常执执行行并并且开销大、命中率低的查询建立索引

35、。且开销大、命中率低的查询建立索引。第三十八页,本课件共有40页例:实现例:实现 Stack方法方法1:从:从 List 派生派生 push=last+add pop=last+remove问题:问题:Stack.first 也是合法的也是合法的。ListaddremovefirstlastStackpushpopInheritance 利用委托利用委托(commitment)方方法法2:把把 List 作作为为 Stack 的的一一 个个 attribute,称称 为为 commitment。这这种种方方法法比比较较安全安全(Stack.first 为非法为非法)。ListaddremovefirstlastStackList 1pushpopCommitment第三十九页,本课件共有40页98 本章重点本章重点1 1)熟悉熟悉OODOOD的基本概念,掌握的基本概念,掌握OODOOD的准则以及的准则以及启发规则。启发规则。2 2)掌握掌握软件重用的基本概念,软件重用技术。软件重用的基本概念,软件重用技术。3 3)掌握掌握OODOOD系统分解与设计的基本概念与方法。系统分解与设计的基本概念与方法。4 4)掌握掌握关联设计与系统优化策略。关联设计与系统优化策略。第四十页,本课件共有40页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com