欢迎来到天天文库
浏览记录
ID:26963785
大小:375.51 KB
页数:38页
时间:2018-11-30
《《面向对象设计 》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十一章面向对象设计(Object-OrientedDesign)§1.OOD准则:优秀软件设计的一个重要特点是容易维护回顾:SD准则包括ModularizationAbstractionInformationhidingModuleindependence对于OOD有类似的准则:1、Module=Object§1.OOD准则Procedureabstraction:在SD中已讨论Dataabstraction:Class即是一种抽象数据类型。外界无须知道实现方法就可按照类协议(classdescriptionprotocol)*使用
2、class中定义的数据。Parameterabstraction:将数据类型作为参数处理。*Classdescriptionprotocol:Thecompletedefinitionofallproperties,features,andmethodsthataredescriptiveofanyobjectthatisaninstanceofaclass.[TimothyBuddAnIntroductiontoObject-OrientedProgrammingAddison-WesleyPublishingCompany,Inc.1991
3、]2、Abstraction:抽出事物的本质特性,暂不考虑其细节,使设计从具体实现方法中超脱。§1.OOD准则例:C++中的“模板”(template)templateclassarray_n{private:Titems[n];//定义了T类型的向量元素共n个};main(){……array_nw;//w是有1000个元素的复向量……}§1.OOD准则3、Informationhiding=Encapsulationofobject4、Coupling:交互耦合(interactiveco
4、upling):通过传递message发生要求降低参数个数和参数复杂性减少objects发送接收message的个数aslooseaspossible继承耦合(inheritancecoupling):要求ParentclassIS_Achildclassashighaspossible§1.OOD准则一般-特殊内聚(general-particularcohesion):Highg-pcohesionHighinheritancecoupling5、Cohesion:服务内聚(servicecohesion):一个服务只完成一个功
5、能。类内聚(classcohesion):一个类只有一个用途,否则分解之。6、Reusability(详见§3)§2.启发式规则1、设计结果清晰易懂,应做到:①用词一致——按习惯用法命名。不同classes中相似的methods最好取同一名字。②使用已有的protocol。③尽量减少message模式的数目。④避免模糊定义。2、一般-特殊结构的深度应适当(约100个classes,则设计7±2层)§2.启发式规则3、设计简单的class(定义不超过一页纸或两屏)。应注意:①避免过多attributes;②能用简单的语句描述一个class的任务;
6、③objects之间合作关系要简单;④避免过多methods(7个)。问题:设计出大量的classes,使结构复杂度增加。解决:划分主题,提高可理解性。4、使用简单的protocol,减少message中传递的parameters5、使用简单的method(CASE可考虑用inheritance替代)。6、把设计变动减至最小。1、概念:知识重用(例如软件工程知识的重用)方法和标准重用(例如OO方法和国家规定的软件开发规范的重用)软件成分的重用§3.软件重用(SoftwareReuse)知识工程源码剪贴——无法溯源,无配置管理Include
7、——修改后所有包含了此段代码的程序都须重新编译。Inheritance——无须改动原有代码想象一下,stdio.h被改动之后……重用软件成分有三个级别:①代码重用:§3.软件重用②设计重用——当移植系统时③分析重用——当需求未变,而系统结构改变时(例如将HDIS改为OO实现)2、重用效果的衡量:⑴额外代价:创建可重用成分的专门投资多花2~4倍时间测试以保证质量构件库的建立与维护需要投资以上投资将分摊到重用这些构件的新系统成本中。重用次数越多,分摊成本越少。§3.软件重用记:Lt=Totallengthofcode(#oflines)Ln
8、=LengthofnewcodeLr=LengthofreusedcodeEt、En、Erarethecorrespondingeffo
此文档下载收益归作者所有