欢迎来到天天文库
浏览记录
ID:53748676
大小:2.35 MB
页数:81页
时间:2020-04-22
《面向对象的程序设计与设计模式05_面向对象与软件复用.pdf》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、面向对象的程序设计与设计模式面向对象的程序设计与设计模式ObjectOrientedProgrammingandDesignPatternsObjectOrientedProgrammingandDesignPatterns第五部分第五部分面向对象与软件复用面向对象与软件复用主讲:杨大川主讲:杨大川中国科学院研究生院软件学院中国科学院研究生院软件学院20052005年年33月月软件的维护软件的维护维护的费用维护的费用==开发的费用开发的费用**22维护的内容:维护的内容:¢清除错误与缺陷清除错误与缺陷¢扩充功能扩充功能软件的维护软件的维护==软件的再生软
2、件的再生OOP中国科学院研究生院软件学院-杨大川2可维护性低的原因可维护性低的原因LegacysystemLegacysystem原因原因((RoberRoberMartin)Martin)¢RigidityRigidity过于僵硬过于僵硬¢FragilityFragility过于脆弱过于脆弱¢ImmobilityImmobility复用率低复用率低¢ViscosityViscosity黏度过高黏度过高OOP中国科学院研究生院软件学院-杨大川3可复用性可复用性传统的复用传统的复用¢CopyCopy--PastePaste¢算法的复用算法的复用¢数据结构的
3、复用数据结构的复用¢代码的复用代码的复用可维护性与传统复用的矛盾可维护性与传统复用的矛盾¢例:例:A,BA,B同时使用同时使用CC,,AA希望希望CC增加一个功能,增加一个功能,BB不允许不允许CC增加这个功能。增加这个功能。OOP中国科学院研究生院软件学院-杨大川4面向对象的复用面向对象的复用封装封装¢保持和促进系统的可维护性保持和促进系统的可维护性继承继承¢使得概念和定义可以复用使得概念和定义可以复用多态多态¢使得实现和应用可以复用使得实现和应用可以复用OOP中国科学院研究生院软件学院-杨大川5设计的目标设计的目标可扩展性可扩展性((Extensib
4、ilityExtensibility))灵活性灵活性((FlexibilityFlexibility))可插入性可插入性((PluggabilityPluggability))OOP中国科学院研究生院软件学院-杨大川6敏捷设计敏捷设计AgileSoftwareDevelopmentAgileSoftwareDevelopment致力于保持系统设计在任何时间都尽可能致力于保持系统设计在任何时间都尽可能的简单、干净。的简单、干净。OOP中国科学院研究生院软件学院-杨大川7老子论不武老子论不武士:软件工程师士:软件工程师天下有道,却走马擅为士武:对系统的大规模
5、武:对系统的大规模以粪。天下无道,修改修改者不武戎马生于郊。道:软件复用道:软件复用马:代码高手马:代码高手OOP中国科学院研究生院软件学院-杨大川8软件复用的原则软件复用的原则OCPOCP:开:开--闭原则闭原则SRPSRP:单一职责原则:单一职责原则LSPLSP:里氏代换原则:里氏代换原则DIPDIP:依赖倒转原则:依赖倒转原则ISPISP:接口隔离原则:接口隔离原则CRPCRP:合成复用原则:合成复用原则LoDLoD:迪米特法则:迪米特法则OOP中国科学院研究生院软件学院-杨大川9OpenOpen--ClosedPrincipleClosedPri
6、nciple开开--闭原则闭原则定义定义SoftwareentitiesshouldbeopenforSoftwareentitiesshouldbeopenforextension,butclosedformodification.extension,butclosedformodification.软件实体应该尽可能允许扩展,同时尽可软件实体应该尽可能允许扩展,同时尽可能避免被更改。能避免被更改。OOP中国科学院研究生院软件学院-杨大川11太玄经太玄经知固而不知革,物失其则,知革而不知固,物失其均固:固:closeformodificationclo
7、seformodification革:革:openforextensionopenforextensionOOP中国科学院研究生院软件学院-杨大川12OCPOCP的关键的关键抽象技术抽象技术¢abstractclassabstractclass¢InterfaceInterface抽象预见了可能的所有扩展(闭)抽象预见了可能的所有扩展(闭)由抽象可以随时导出新的类(开)由抽象可以随时导出新的类(开)OOP中国科学院研究生院软件学院-杨大川13玉帝招安美猴王玉帝招安美猴王OOP中国科学院研究生院软件学院-杨大川14实例:手与门实例:手与门思考:如何在程序中
8、模拟用手去开门和关思考:如何在程序中模拟用手去开门和关门?门?行为:行为:¢开门
此文档下载收益归作者所有