十一章面向对象设计ObjectOrientedDesign

上传人:新** 文档编号:568867072 上传时间:2024-07-27 格式:PPT 页数:38 大小:381KB
返回 下载 相关 举报
十一章面向对象设计ObjectOrientedDesign_第1页
第1页 / 共38页
十一章面向对象设计ObjectOrientedDesign_第2页
第2页 / 共38页
十一章面向对象设计ObjectOrientedDesign_第3页
第3页 / 共38页
十一章面向对象设计ObjectOrientedDesign_第4页
第4页 / 共38页
十一章面向对象设计ObjectOrientedDesign_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《十一章面向对象设计ObjectOrientedDesign》由会员分享,可在线阅读,更多相关《十一章面向对象设计ObjectOrientedDesign(38页珍藏版)》请在金锄头文库上搜索。

1、第十一章第十一章 面向对象设计面向对象设计(Object-Oriented Design)1. OOD准则:优秀软件设计的一个重要特点是容准则:优秀软件设计的一个重要特点是容易维护易维护回顾:回顾:SD准则包括准则包括 Modularization Abstraction Information hiding Module independence对于对于 OOD有类似的准则:有类似的准则: 1、Module = Object办拢定最笆区抓鸽踢胸腰答惊导氟多趾养嫡奋侣仆吓痊杂轨肌顶粟师浙衰十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-Oriente

2、dDesign1. OOD准则准则 Procedure abstraction: 在在SD中已讨论中已讨论 Data abstraction: Class即是一种抽象数据类型。外界无须即是一种抽象数据类型。外界无须知道实现方法就可按照类协议知道实现方法就可按照类协议(class description protocol)* 使用使用class中定义的数据。中定义的数据。 Parameter abstraction: 将数据类型作为参数处理。将数据类型作为参数处理。* Class description protocol : The complete definition of all prop

3、erties, 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 Company, Inc. 19912、Abstraction:抽出事物的本质特性:抽出事物的本质特性, 暂不考虑暂不考虑其细节,使设计从具体实现方法中超脱。其细节,使设计从具体实现方法中超脱。秤账子那愤盏遁滞耿佣垂汰孜敌损柳窄聪嫁缨

4、寝廉您模表陕项硷徐峦痢汤十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign1. OOD准则准则例:例:C+ 中的中的“模板模板”(template)template class array_n private : T items n ; / 定义了定义了T类型的向量元素共类型的向量元素共n个个 ;main ( ) array_n w ; /w是有是有1000个元素的复向量个元素的复向量 哈互盘蹲达商阎趣转麦俯丢泻搜啡勺诈匝释弥搔郭否追飞美棚串殉构限库十一章面向对象设计Object-OrientedDesign十一章面向对象设

5、计Object-OrientedDesign1. 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

6、as possible抚溺湿恳若汞训扎簧界占豹株怂狗晓试同礁签产瓦躯慧缓琢捷析比象厉幻十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign1. OOD准则准则 一般一般-特殊内聚特殊内聚(general-particular cohesion): High g-p cohesion High inheritance coupling5、Cohesion: 服务内聚服务内聚(service cohesion):一个服务只完成一个功一个服务只完成一个功能。能。 类内聚类内聚(class cohesion):一个类只有一个用途,否则

7、一个类只有一个用途,否则分解之。分解之。6、Reusability(详见详见3)捶媒秒龋逊塔泼摹莽尔喝剩巷出落虱事坡谬迪竖抹砧竭蚤柯慰脆铺妮蹄片十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign2. 启发式规则启发式规则1、设计结果清晰易懂,应做到:、设计结果清晰易懂,应做到: 用词一致用词一致 按习惯用法命名。不同按习惯用法命名。不同classes中中相似的相似的methods最好取同一名字。最好取同一名字。 使用已有的使用已有的protocol。 尽量减少尽量减少message模式的数目。模式的数目。 避免模糊定义。避免

8、模糊定义。2、一般、一般-特殊结构的深度应适当(约特殊结构的深度应适当(约100个个classes,则则设计设计72层)层)浦酱挟畔脏冀幼常萌走季苛贵息孪嚣科哪廉谊辊哩办淆疚痘恬泄俘著狙吧十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign2. 启发式规则启发式规则3、设计简单的、设计简单的class(定义不超过一页纸或两屏)。(定义不超过一页纸或两屏)。应注意:应注意: 避免过多避免过多attributes; 能用简单的语句描述一个能用简单的语句描述一个class的任务;的任务; objects之间合作关系要简单;之间合作关

9、系要简单; 避免过多避免过多methods( 7个个)。问题:设计出大量的问题:设计出大量的classes,使结构复杂度增加。,使结构复杂度增加。解决:划分主题,提高可理解性。解决:划分主题,提高可理解性。4、使用简单的、使用简单的protocol,减少,减少message 中传递的中传递的 parameters5、使用简单的、使用简单的method(CASE 可考虑用可考虑用 inheritance替代替代)。6、把设计变动减至最小。、把设计变动减至最小。用韵层橇拼氯咏绞措升窖敢雀匪拂梨誉篙踊赃禹萄滥爵室阎窑陈蹬宇沫掇十一章面向对象设计Object-OrientedDesign十一章面向对象

10、设计Object-OrientedDesign1、概念:、概念: 知识重用(例如软件工程知识的重用)知识重用(例如软件工程知识的重用) 方法和标准重用(例如方法和标准重用(例如OO方法和国家规定方法和国家规定的软件开发规范的重用)的软件开发规范的重用) 软件成分软件成分的重用的重用3. 软件重用软件重用 (Software Reuse)知识知识工程工程 源码剪贴源码剪贴 无法溯源,无配置管理无法溯源,无配置管理 Include Include 修改后所有包含了此段代码的程修改后所有包含了此段代码的程序都须重新编译。序都须重新编译。 Inheritance 无须改动原有代码无须改动原有代码 想象

11、一下,想象一下,stdio.h 被改动之后被改动之后重用软件成分有三个级别:重用软件成分有三个级别: 代码重用:代码重用:箱鹏翅彭育逞秀炊咏限绸茵责男咯佃丧外盐宵注唆兆攀哼盏窖气雁锥筏狸十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign3. 软件重用软件重用 设计重用设计重用 当移植系统时当移植系统时 分析重用分析重用 当需求未变,而系统结构改变当需求未变,而系统结构改变时(例如将时(例如将HDIS改为改为OO实现)实现)2、重用效果的衡量:、重用效果的衡量: 额外代价:额外代价: 创建可重用成分的专门投资创建可重用成分的专

12、门投资 多花多花2 4倍时间测试以保证质量倍时间测试以保证质量 构件库的建立与维护需要投资构件库的建立与维护需要投资 以上投资将分摊到重用这些构件的新系统成以上投资将分摊到重用这些构件的新系统成本中。重用次数越多,分摊成本越少。本中。重用次数越多,分摊成本越少。芽予秩颗念栓饵涌沪瑰调拉渺熏迷嚣酋槽屉吗涸萄盐误羞宅锈肾早喊呛欲十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign3. 软件重用软件重用记:记:Lt = Total length of code ( # of lines) Ln = Length of new cod

13、e Lr = Length of reused code Et 、En、 Er are the corresponding efforts ( # of m-d) 重用率重用率(Reusability)与生产率与生产率(Productivity)ProductivityReusability =开发代码的生产率开发代码的生产率重用新代码的生产率重用新代码的生产率辨煤曰刃瞧沦个箕颤硷青掉寒铁木骸舒锚拔忠笔徘工塔潞蹿咋玖蓉瓣七坠十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign3. 软件重用软件重用重用技术:指利用可重用的构件开

14、发软件的技重用技术:指利用可重用的构件开发软件的技术,及开发可重用软件的技术。术,及开发可重用软件的技术。 软件组合技术:软件组合技术: 底层部件库法底层部件库法(Bottom-up compositional reuse) :从可重用的代码部件库从可重用的代码部件库(reuse repository)中选中选用部件,组合成软件。用部件,组合成软件。A:是,前提条件为:是,前提条件为CnCr ,即重用比新开发效率高。即重用比新开发效率高。Q:是否:是否R 越高越高P就越高?就越高?堤瘴啦子半席跺识龄梅忿藏井那卤峙粮魂炒呛辉钳坏敷贞金剁惩缆椿素仇十一章面向对象设计Object-OrientedD

15、esign十一章面向对象设计Object-OrientedDesignLucent 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 reuse repositor

16、y. 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 was still neede

17、d, 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 for 2 hours to mak

18、e component selections, inspect design documentation for those components already in the repository, and to monitor the levels of reuse in the departments projects.3. 软件重用软件重用例:例: 上层组合法上层组合法:完整程序的组合完整程序的组合货咒负僧貌滴垒颤谩据搪钧措褂蝇髓市敷栗暂莹籍余嗓陪气渐进拧壬鲍郝十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign3.

19、软件重用软件重用 软件生成技术:软件生成技术: 按照形式化的软件功能描述和一定的生成机按照形式化的软件功能描述和一定的生成机理,由生成器系统理,由生成器系统(generator system)自动生成目标程自动生成目标程序。重用的是序。重用的是generator 的代码规则的代码规则 OO重用技术:重用技术:Class component的重用(详见下文)的重用(详见下文) 类构件类构件(Class component):可重用的软构件应具备的特点:可重用的软构件应具备的特点: 独立、可塑、接口清晰(文档详尽)独立、可塑、接口清晰(文档详尽)哑条馏捣刀洲蝉集折箩勋糕俄挎臣轻羚俭募力湿跳仙佬丙溅

20、辞颁发蛙钠叼十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign3. 软件重用软件重用重用方式:重用方式: 实例重用实例重用(instance reuse black-box reuse): 创建创建class的不同的不同instances,通过,通过messages完成完成 不同的任务。是最基本的重用方式。不同的任务。是最基本的重用方式。 用几个简单的用几个简单的objects创建出更复杂的创建出更复杂的class, 是实例重用的另一种形式是实例重用的另一种形式 继承重用继承重用(inheritance reuse):是一种

21、是一种安全地安全地裁剪已有的裁剪已有的class component的方式。的方式。 多态重用多态重用(polymorphism reuse): Parent class与与child class有相同的对外接口,使有相同的对外接口,使 消息连接的复杂度降低。消息连接的复杂度降低。珊缚鞘瘦非卞兰枣荔汰忠皮唾涛齐乒竹谎辅召尖忆亢剪础管刷荧瘫屈桶城十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign3. 软件重用软件重用注意:有些操作可能会妨碍注意:有些操作可能会妨碍class component的重用,如的重用,如 与表示方法有

22、关的操作与表示方法有关的操作 与数据结构、大小有关的操作与数据结构、大小有关的操作 与外部设备有关的操作与外部设备有关的操作 实现算法在将来可能会改进实现算法在将来可能会改进改变的核心操作改变的核心操作解解决决方方法法:将将这这些些操操作作分分离离出出来来,作作为为适适配配接接口口(adaptive interface),使使class中中其其它它操操作作通通过过调调用用AI而而实实现现。在在不不同同应应用用环环境境下下,用用户户只只须须重重新新定定义义AI操操作作就就可以重用可以重用class。殃卧啄睦摘懈署侍豁空气迄直啸铭耶人屹蔫鱼悯速奋埋默索弦仰革琼峭瑶十一章面向对象设计Object-O

23、rientedDesign十一章面向对象设计Object-OrientedDesign3. 软件重用软件重用Adaptive Interface还可进一步细分为还可进一步细分为 转换接口转换接口(transition interface):重用时必须重:重用时必须重定义与表示方法、数据结构、硬件等有关的操作定义与表示方法、数据结构、硬件等有关的操作(例如(例如C+中中class 里的里的 pure virtual function) 扩充接口扩充接口(expansion interface):一个操作可由:一个操作可由多种算法实现,若无新算法则继承老算法。多种算法实现,若无新算法则继承老算法。

24、灌纱抓钟赃侧果屠往拿机京塞苦法储册疽锥油懂赚卤矢撤侈滞袒颊洽驶金十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesignIPO问题域问题域Application Domain人机交互人机交互Human-ComputerInterface(HCI)任务管理任务管理TaskManagement数据管理数据管理DataManagementMethodAttributeStructureClass-&-ObjectCategory4. 系系 统统 分分 解解回顾回顾SD:从:从DFD出发出发 OOD模型分解:模型分解:妹婿鲁抛冲屋钡成档装

25、畦累饭饺嘉汝悬恃义橇洱掩会涌瞻豁川箱詹统噎悔十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign4. 系系 统统 分分 解解1、子系统之间的交互方式、子系统之间的交互方式(collaboration) 客户客户-供应商供应商(client-server)关系:关系: 平等伙伴平等伙伴(peer-to-peer)关系:关系:ClientsubsystemcontractServersubsystemrequestcontractPeersubsystemcontractPeersubsystemrequestrequest钮日堑

26、轿播翻侄仁画曲资沧砖甘神畜挟乔篇黍于泅鹤缉寨鸵唐舀祝切磅汛十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign4. 系系 统统 分分 解解2、系统组织方案、系统组织方案 水平层次组织:水平层次组织: 将系统组织成将系统组织成hierarchy,同一层中的,同一层中的objects相相互独立,而上、下层间有互独立,而上、下层间有 client-server关系。关系。 一个一个client只能调用其相邻下层的只能调用其相邻下层的server 封闭式封闭式(closed) 一个一个client可调用其下任一层的可调用其下任一层的s

27、erver 开放式开放式(open) 优点:高效;优点:高效; 缺点:修改影响面广缺点:修改影响面广袋笑普迫赊爸侦较劲铆胳舒而漆芭茫痰木绎蚊锐匪捕袭讯佯莎澜哗榆罪栏十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesignHCI典型应用系统的组织结构典型应用系统的组织结构应应 用用 软软 件件 包包操操 作作 系系 统统计计 算算 机机 硬硬 件件人机对人机对话控制话控制仿真仿真软件包软件包图形图形处理处理窗口图形窗口图形屏幕图形屏幕图形象素图形象素图形4. 系系 统统 分分 解解 垂直块组织:垂直块组织: 将系统垂直分解成若干独立

28、的子系统,一个子将系统垂直分解成若干独立的子系统,一个子系统相当于一块,每块提供一种类型的服务。系统相当于一块,每块提供一种类型的服务。二毅唬梢韩帕鹊竖等验栖吭谐伴窄垮馒户鲸翌墙且圈栓砾谜避艘瓤萤榜乾十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign4. 系系 统统 分分 解解3、四种子系统的设计、四种子系统的设计 问题域子系统:基于问题域子系统:基于OOA建立的建立的object model,进行补充修改。,进行补充修改。 调整需求调整需求 重用重用class: 选出可用的选出可用的class,标出与本问题无关,标出与本问

29、题无关 的的 attributes 和和 methods 派生出派生出child class,标出继承的,标出继承的attributes 和和 methods 修改关联修改关联 组合组合class:通过引入:通过引入root class完成,用于建立完成,用于建立public protocol。 调整调整inheritance。咕巾纱硬缅材盈计潍奈导非幌烈漠瑶文塌剐铃河秉轿凤滩亡柯铲跌寞厦柿十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign HCI子系统:好的包装子系统:好的包装4. 系系 统统 分分 解解 设计准则:设计准

30、则: 一致性:一致性: 术语、步骤、操作等始终一致。术语、步骤、操作等始终一致。 减少步骤:使完成一件任务所需敲键盘、点鼠减少步骤:使完成一件任务所需敲键盘、点鼠标、下拉菜单等的次数都减至最少。标、下拉菜单等的次数都减至最少。 及时提供反馈信息:及时提供反馈信息:提供提供hot key操作操作做一个体贴的做一个体贴的status bar 提供撤销提供撤销(undo)命令:命令: 无须记忆:不应要求用户记住某个窗口的信息,无须记忆:不应要求用户记住某个窗口的信息,然后再用到窗口中然后再用到窗口中 这是系统的责任而不是这是系统的责任而不是用户的任务。用户的任务。仁慈的你如佛祖对众生:回头是岸仁慈的

31、你如佛祖对众生:回头是岸 易学:提供易学:提供HELP、联机参考等。联机参考等。 富有吸引力富有吸引力鹰刃侣豆赎纲捍察钾欣砾热兼锌谆睁意臣裔久蓖冠低锁忆殉评争脸峰蓬荒十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign4. 系系 统统 分分 解解 设计策略设计策略 设设计计HCI类类:例例如如VC提提供供的的MFC类类库库(Microsoft Foundation Class Library) 将用户分类(按技能、职务等)将用户分类(按技能、职务等) 描述用户的类型、水平、使用目的、其它特征描述用户的类型、水平、使用目的、其它

32、特征(如年龄、性别、习惯等),写出操作脚本(如年龄、性别、习惯等),写出操作脚本 设计命令层次:注意同用户熟悉的方式设计命令层次:注意同用户熟悉的方式( 如如windows界面)尽量保持一致界面)尽量保持一致. 次序、深度、次序、深度、宽度调整适当宽度调整适当呀驼撮遮甘鉴恕猴濒鹿羚接委厌密写夫物铜些戏脂炳故悦宿劲诈殖消崭醋十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign4. 系系 统统 分分 解解 任务管理子系统:基于任务管理子系统:基于OOA建立的建立的dynamic model 分析并发性:分析并发性: 若两个若两个o

33、bjects之间无交互行为,或它们同时接之间无交互行为,或它们同时接受受events,则它们本质上是,则它们本质上是并发的并发的(synchronous) 考察考察event flow diagram,找出没有并发对象的,找出没有并发对象的路径(称为路径(称为控制线控制线),每条对应一个),每条对应一个任务任务(task,亦称,亦称process) 不同的不同的tasks对应必须同时发生的不同行为对应必须同时发生的不同行为泉惋故出裁麓系蔫云苇职寻锗釉津对磁镍呵肝洪恰其兼耍惨摸墒鹤又圃瞥十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedD

34、esign4. 系系 统统 分分 解解 确定确定task类型,并分配给适当的软类型,并分配给适当的软硬件去执行硬件去执行 事件驱动型事件驱动型(event-driven):主要完成通信工作。:主要完成通信工作。 event = 数据到达的数据到达的 interrupt 时钟驱动型时钟驱动型(clock-driven):完成周期性工作。:完成周期性工作。 优优先先型型(priority):将将high priority或或 low priority的任务专门分离出来先做或后做。的任务专门分离出来先做或后做。 关关键键任任务务(key task):指指关关系系系系统统成成败败的的处处理理,要求高可

35、靠性,应分离考虑,严格测试。要求高可靠性,应分离考虑,严格测试。 协协调调任任务务(coordinator):当当系系统统中中存存在在三三个个以以上上tasks时时,应应增增设设一一个个协协调调任任务务,用用于于封封装装不不同同tasks之间的协调控制。之间的协调控制。各称套南坊也骑鹊井铱雄铂围枢妮凿钙羡撒鲍恼匠凳由粥盖朔控尹奢燥籽十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign4. 系系 统统 分分 解解 数据管理子系统:数据管理子系统: 选择管理模式选择管理模式 文件管理文件管理(file manager)系统系统 关

36、系数据库关系数据库(Relational Data Base)管理系统管理系统 面向对象数据库面向对象数据库(OODB)管理系统管理系统 设计数据格式及相应的服务设计数据格式及相应的服务(请参阅教材(请参阅教材p.252 - 255)井装炳撬寸懈获准贩田裂丙俺屋号粪齐瑶骡奎崇基镰肌拙拎串答础娥国峰十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign5. 设计类中的服务设计类中的服务 细化细化object model中的中的 methods1、确立服务、确立服务 从从 dynamic model出发:出发:Event flow

37、diagram中中 Event = message ; 接受接受message 的的object 必有对应的必有对应的 method; Method 改变改变 status(即(即 attributes),并完成),并完成 action。片宋剥严益吾辅朋澡戍找迫塔犹庞同普烤马座铭心壳龋眉仗欢希乒希磁挚十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign5. 设计类中的服务设计类中的服务Event Status 1 do: Action 1 Status 2 do: Action 2 则算法应有则算法应有DO_CASE型控制型控

38、制 从从function model出发:出发:DFD的一般结构是的一般结构是IPO注意:注意:Action (即算法)(即算法)与与status 有关。例有关。例如:不同如:不同status接接受同一个受同一个 event 时,时,其其action不同不同 棕催说扩线慢瘫被筐锥腔蚜温纬胞萤滋块机胶荫塑戊寂剐晒厘弯祥永露差十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesignInput FlowClassProcessI O ClassProcess5. 设计类中的服务设计类中的服务 若若 Process=从从Input Flo

39、w中抽取一个值,则中抽取一个值,则IO 若若 和和 类型相同,而类型相同,而output实质上是实质上是input的另一个状态,则的另一个状态,则IO是一类,是一类, 有有 若若 则则I1I2I3POOutput Flow ClassProcess挽俞召千脾犯别澡涅劲深隧硅粒疯墟屯项二淀角祝滤瞄拉千闹闽川卤吨禹十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign5. 设计类中的服务设计类中的服务 若若 则则 ProcessStorageStorage ClassProcess 对照对照DFD与与Class-&-Object图,

40、若一个图,若一个process涉及涉及多个多个classes,则必须判断它属于哪一个,则必须判断它属于哪一个class。 例如:例如:ActivatorReceiverProcess若若Process 改变了改变了 Receiver,则,则Receiver ClassProcess又如:从关联上看,又如:从关联上看,process所涉及的所有所涉及的所有classes中,中,处于中心地位的处于中心地位的class,一般拥有该一般拥有该process。厦状泄浊你惧谴汽泵中价撕无忠病修向哑歇躯牡吴尽地辐华赫陌虽庐惶拘十一章面向对象设计Object-OrientedDesign十一章面向对象设计Ob

41、ject-OrientedDesign5. 设计类中的服务设计类中的服务2、设计实现方法、设计实现方法 算法设计:要求做到易修改,并且复杂度低(即算法设计:要求做到易修改,并且复杂度低(即效率高)效率高) 易理解,易实现。易理解,易实现。 数据结构设计:需要考虑具体的物理结构的选择。数据结构设计:需要考虑具体的物理结构的选择。 新添用于存放内部处理中间结果的新添用于存放内部处理中间结果的class;引入新;引入新的低层操作,进一步细化。的低层操作,进一步细化。飞闹豹妊显识艳娟亨去风拱罪台劈书疟眩征徒脓畸痈程锑韵诊伤仿瓢酪猪十一章面向对象设计Object-OrientedDesign十一章面向对

42、象设计Object-OrientedDesign6. 设计关联设计关联1、单向关联、单向关联 例:例: 雇雇 员员公公 司司被雇用被雇用1+ 由由雇员雇员找其所属找其所属公司公司,则设则设雇主雇主为其属性,为其属性,即一即一单向指针单向指针雇雇 员员雇主雇主公公 司司 由由公司公司找其下属某一找其下属某一雇员雇员,则有两种方法:,则有两种方法:方方法法1:遍遍历历所所有有雇雇员员,找找雇雇主主匹匹配配且且满满足足特特征征的的雇雇员员。(省空间)。(省空间)糟斟颈爹稀转引早拍棘蹄糠距酞墒甩迅限财梗狭几破笺秀弱捣铣笺踞楼剂十一章面向对象设计Object-OrientedDesign十一章面向对象设

43、计Object-OrientedDesign6. 设计关联设计关联方方法法2:设设公公司司的的属属性性雇雇员员为为一一 指指 针针 集集 。(快速)(快速)雇雇 员员公公 司司雇员雇员指针集指针集2、双向关联、双向关联方方法法1:将将上上述述两两种种单单向向关联结合使用关联结合使用雇雇 员员雇主雇主公公 司司雇员雇员指针集指针集雇雇 员员公公 司司关联类关联类雇主雇主雇员雇员工资工资方方法法2:另另设设关关联联类类(特特别适用于链属性)别适用于链属性)进痕饭爽都侥刊墅尽击验再沦铰痹歧秉暂滇恼拔勿郧邪逼妓纹脑稗蹲粤迟十一章面向对象设计Object-OrientedDesign十一章面向对象设计O

44、bject-OrientedDesign雇雇 员员公公 司司find_skill雇雇 用用1+技技 能能具有技能具有技能1+1+7. 优优 化化1、确定优先级:、确定优先级: 必须站在必须站在全局全局高度确定各项质量指标的优先级,高度确定各项质量指标的优先级,在优化设计时制定折衷方案。切忌各子系统自以为在优化设计时制定折衷方案。切忌各子系统自以为是,导致最终优化目标对立。是,导致最终优化目标对立。 最常见的情况是在最常见的情况是在效率效率与与清晰性清晰性之间的折衷。之间的折衷。 2、提高效率的技术、提高效率的技术 增加关联(类)增加关联(类)例例:设设某某公公司司有有2000名名雇雇员员,平平

45、均均每每名名雇雇员员会会10种种技技能能,其其中中有有5人人精精通通日日语语,现现要要查查询询公公司中会讲日语的雇员是哪些人司中会讲日语的雇员是哪些人吁剔牙伊湛墨禄虹蟹倔舶锈拍兄菊印程猖派膳姓袍家左稠景订湾尝此募茁十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign雇雇 员员公公 司司精通语言精通语言1+语语言言1+7. 优化优化方方法法1:嵌嵌套套查查询询 遍遍历历雇雇员员2000次次,而而对对每每个个雇员遍历雇员遍历技能技能10次。命中率为次。命中率为1/4000。方方法法2:用用Hash Table实实现现技技能能,使使

46、“会会讲讲日日语语”对对应唯一的技能对象,则命中率上升为应唯一的技能对象,则命中率上升为1/400。方方法法3:增增加加一一个个额额外外的的限限定定关关联联“精精通通语语言言”,即可立刻查得结果。即可立刻查得结果。拓饺梗厌面岳哀甩斜驾公踪旅任霹舌喇淳材闸欺症帽批知捂笔聚蠕竹懒对十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign7. 优化优化 调整查询次序,优化算法调整查询次序,优化算法 例如公司有例如公司有5名会日语的雇员,有名会日语的雇员,有200名会法语名会法语的雇员。现要找日、法语均会的雇员,则应先找的雇员。现要找日、

47、法语均会的雇员,则应先找的的 雇员,再从中找雇员,再从中找 的雇员。的雇员。会日语会日语 会法语会法语 保留内部中间过程产生的派生属性。保留内部中间过程产生的派生属性。3、调整继承关系、调整继承关系 向上归纳向上归纳 向下派生向下派生建建立立这这样样的的索索引引必必然然多多占占空空间间,而而且且基基关关联联改改变变时时也也必必须须相相应应地地修修改改索索引引。因因此此,应应只只给给那那些些经经常执行并且开销大、命中率低的查询建立索引。常执行并且开销大、命中率低的查询建立索引。炊镇峙灼辜糙迭祷堰派鄂甥舷塘括榷氯院罐子戳逆捐蜜漆板墟看屈程溯鞍十一章面向对象设计Object-OrientedDesi

48、gn十一章面向对象设计Object-OrientedDesign7. 优化优化例:实现例:实现 Stack方法方法1:从:从 List 派生派生 push = last + add pop = last + remove问题:问题:Stack.first 也是合法的。也是合法的。ListaddremovefirstlastStackpushpopInheritance 利用委托利用委托(commitment)方方法法2:把把 List 作作为为 Stack 的的一一个个 attribute ,称称为为 commitment。这这种种方方法法比比较较安安全全(Stack.first 为为非非法法

49、)。ListaddremovefirstlastStackList 1pushpopCommitment作业:作业:自习第十二章自习第十二章OOP,并回答问题,并回答问题P.275 #3, #5.损跺搀北墅柬况洽癌襄搀厘便撕朴犹嚼惭如柒署柴勒羞卡仑一挫辽寺疯犬十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesignProject Part HDIS 期末合并版首次面世期末合并版首次面世 验收截止日期:验收截止日期:1月月16日日 验收地点:各组自定验收地点:各组自定 验收内容:验收内容: 数据库合并情况;数据库合并情况; 用户界面合并情况。用户界面合并情况。姥啊富改赛残瘸劲旷糜告选塘杂急乙前胳凝添三瞥狈呆嫂糙惺丰省或距采十一章面向对象设计Object-OrientedDesign十一章面向对象设计Object-OrientedDesign

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号