面向对象设计原则.ppt
- 文档编号:2756224
- 上传时间:2022-11-11
- 格式:PPT
- 页数:110
- 大小:4.33MB
面向对象设计原则.ppt
《面向对象设计原则.ppt》由会员分享,可在线阅读,更多相关《面向对象设计原则.ppt(110页珍藏版)》请在冰豆网上搜索。
软件工程-面向对象设计原则主讲:
主讲:
苏锦钿苏锦钿(SuJD)单位:
计算机科学与工程学院单位:
计算机科学与工程学院时间:
时间:
20222022年年1111月月1111日日1本章需要掌握的知识点本章需要掌握的知识点v(11)了解什么是好的软件设计。
)了解什么是好的软件设计。
v(22)掌握主要的面向对象设计原则及其应)掌握主要的面向对象设计原则及其应用,如用,如LSPLSP、OCPOCP、ISPISP、SRPSRP等。
等。
v(33)了解继承关系与子类型之间的关系及)了解继承关系与子类型之间的关系及区别。
区别。
华华南南理理工工大大学学22软软件件工工程程从问题开始!
从问题开始!
v假设要设计一个画图软件假设要设计一个画图软件,其中涉及到长方其中涉及到长方形与正方形形与正方形,那么它们之间的关系如何定义那么它们之间的关系如何定义:
假如我们有一个类:
长方形(假如我们有一个类:
长方形(RectangleRectangle)我们需要一个新的类,正方形(我们需要一个新的类,正方形(SquareSquare)问:
可否直接继承长方形?
问:
可否直接继承长方形?
没问题,因为数学上正方形就是长方形的子类!
没问题,因为数学上正方形就是长方形的子类!
没问题,因为数学上正方形就是长方形的子类!
没问题,因为数学上正方形就是长方形的子类!
华华南南理理工工大大学学33软软件件工工程程Rectangleheight:
intwidth:
intgetHeight():
intgetWidth():
intsetHeight(h:
int):
intsetWidth(w:
int):
intSquareside:
intsetSide(s:
int)getSide():
intsetHeight(h:
int)setWidth(w:
int):
intsetSide(s:
int)side=s;super.setWidth(side);super.setHeight(side);setHeight(h:
int)setSide(h);setWidth(w:
int)setSide(w);华华南南理理工工大大学学44软软件件工工程程开始设计:
正方形开始设计:
正方形publicclassRectanglepublicclassRectangleprivateprivateintintwidth;width;privateprivateintintheight;height;publicvoidpublicvoidsetWidth(intsetWidth(intw)w)width=w;width=w;publicpublicintintgetWidthgetWidth()()returnwidth;returnwidth;publicvoidpublicvoidsetHeight(intsetHeight(inth)h)height=h;height=h;publicpublicintintgetHeightgetHeight()()returnheight;returnheight;publicclassSquarepublicclassSquareextendsRectangleextendsRectanglepublicvoidpublicvoidsetWidth(intsetWidth(intw)w)super.setWidthsuper.setWidth(w);(w);super.setHeightsuper.setHeight(w);(w);publicvoidpublicvoidsetHeight(intsetHeight(inth)h)super.setWidthsuper.setWidth(h);(h);super.setHeightsuper.setHeight(h);(h);华华南南理理工工大大学学55软软件件工工程程设计方案正确吗?
设计方案正确吗?
publicstaticvoidpublicstaticvoidresizeresize(Rectangle(Rectangler)r)while(while(r.getHeightr.getHeight()=()=r.getWidthr.getWidth()()r.setHeight(r.getHeightr.setHeight(r.getHeight()+1);()+1);System.out.println(“ItsSystem.out.println(“ItsOK.);OK.);第一种情况第一种情况第一种情况第一种情况:
使用长方形使用长方形使用长方形使用长方形Rectangler1=newRectangle();Rectangler1=newRectangle();r1.setHeight(5);r1.setHeight(5);r1.setWidth(15);r1.setWidth(15);resize(r1);resize(r1);第二种情况第二种情况第二种情况第二种情况:
使用正方形使用正方形使用正方形使用正方形Rectangler2=newSquare();Rectangler2=newSquare();r2.setHeight(5);r2.setHeight(5);r2.setWidth(15);r2.setWidth(15);resize(r2);resize(r2);华华南南理理工工大大学学66软软件件工工程程问题问题?
使用父类(长方形)时,程序正常运行使用父类(长方形)时,程序正常运行使用父类(长方形)时,程序正常运行使用父类(长方形)时,程序正常运行使用子类(正方形)时,程序陷入死循环使用子类(正方形)时,程序陷入死循环使用子类(正方形)时,程序陷入死循环使用子类(正方形)时,程序陷入死循环设计出问题了?
继承出问题了?
设计出问题了?
继承出问题了?
设计出问题了?
继承出问题了?
设计出问题了?
继承出问题了?
华华南南理理工工大大学学77软软件件工工程程为什么会出现问题?
为什么会出现问题?
违背了面向对象的设计原则!
违背了面向对象的设计原则!
华华南南理理工工大大学学88软软件件工工程程面向对象的设计原则面向对象的设计原则v什么是面向对象设计原则?
什么是面向对象设计原则?
v面向对象设计原则有什么意义?
面向对象设计原则有什么意义?
是指导面向对象设计的基本指导思想是指导面向对象设计的基本指导思想是评价面向对象设计的价值观体系是评价面向对象设计的价值观体系是设计模式的出发点和归宿是设计模式的出发点和归宿华华南南理理工工大大学学99软软件件工工程程设计目标设计目标v设计目标设计目标重用性(重用性(ReusabilityReusability)可扩展性可扩展性(ExtensibilityExtensibility)灵活性灵活性(FlexibilityFlexibility)可插入性可插入性(PluggabilityPluggability)v保持系统稳定保持系统稳定华华南南理理工工大大学学1010软软件件工工程程设计质量:
坏的设计设计质量:
坏的设计v著名的软件大师著名的软件大师RobertRobertC.MartinC.Martin认为一个可认为一个可维护性较差的软件通常是由以下的原因引维护性较差的软件通常是由以下的原因引起的:
起的:
过于僵硬(过于僵硬(RigidityRigidity)过于脆弱性(过于脆弱性(FragilityFragility)复用率低(复用率低(ImmobilityImmobility)黏度过高(黏度过高(ViscosityViscosity)华华南南理理工工大大学学1111软软件件工工程程设计质量:
好的设计设计质量:
好的设计v什么是好的设计?
什么是好的设计?
容易理解容易理解容易修改和扩展容易修改和扩展容易复用容易复用容易实现与应用容易实现与应用简单、紧凑、经济适用简单、紧凑、经济适用v让人工作起来心情愉快的设计让人工作起来心情愉快的设计华华南南理理工工大大学学1212软软件件工工程程设计质量:
好的设计设计质量:
好的设计v著名的软件工程和建模大师著名的软件工程和建模大师PeterPeterCoadCoad认为,认为,一个好的软件设计应具备以下性质:
一个好的软件设计应具备以下性质:
可扩展性(可扩展性(ExtensibilityExtensibility)灵活性(灵活性(FlexibilityFlexibility)可插入性(可插入性(PluggabilityPluggability)华华南南理理工工大大学学1313软软件件工工程程v软件的复用或重用软件的复用或重用具有许多优点,如提高具有许多优点,如提高开发效率和可靠性、节约成本,改善可维开发效率和可靠性、节约成本,改善可维护性等。
护性等。
v面向对象设计复用的目标在于面向对象设计复用的目标在于实现支持可实现支持可维护性的复用。
维护性的复用。
v在面向对象的设计中,可维护性复用是以在面向对象的设计中,可维护性复用是以面向对象设计原则为基础的,面向对象设计原则为基础的,这些设计原这些设计原则首先是复用的原则则首先是复用的原则,遵循这些设计原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高可以有效地提高系统的复用性,同时提高系统的可维护性和灵活性。
系统的可维护性和灵活性。
华华南南理理工工大大学学1414软软件件工工程程v面向对象设计原则和设计模式是对系统进行合理面向对象设计原则和设计模式是对系统进行合理重构的指导原则。
重构的指导原则。
所谓的所谓的重构(重构(RefactoringRefactoring)就是就是在不改变软件现有功能的基础上,通过调整程序在不改变软件现有功能的基础上,通过调整程序的代码来改善软件的质量、性能,使其设计模式的代码来改善软件的质量、性能,使其设计模式和架构更合理,提高软件的可扩展性、灵活性和和架构更合理,提高软件的可扩展性、灵活性和可维护性等。
可维护性等。
华华南南理理工工大大学学1515软软件件工工程程面向对象的一些基本设计原则面向对象的一些基本设计原则vLSPLSP:
LiskovLiskov替换原则替换原则TheTheLiskovLiskovSubstitutionPrincipleSubstitutionPrinciplevOCPOCP:
开放:
开放-封闭原则封闭原则TheOpen-ClosePrincipleTheOpen-ClosePrinciplevSRPSRP:
单一职责原则:
单一职责原则TheSingleResponsibilityPrincipleTheSingleResponsibilityPrinciplevISPISP:
接口隔离原则:
接口隔离原则TheInterfaceSegregationPrincipleTheInterfaceSegregationPrinciplevDIPDIP:
依赖倒置原则:
依赖倒置原则TheDependencyInversionPrincipleTheDependencyInversionPrinciplevFCOI(FCOI(或或CRP)CRP):
优先使用组合,而非继承:
优先使用组合,而非继承FavorCompositionOverInheritancevLoDLoD:
迪米特原则:
迪米特原则LawofDemeter华华南南理理工工大大学学1616软软件件工工程程v这七个常用的面向对象设计原则并不是独立存在,而是相互这七个常用的面向对象设计原则并不是独立存在,而是相互依赖,相互补充的。
依赖,相互补充的。
设计原则名称设计原则名称简介简介重要性重要性里氏替换原则里氏替换原则LSPLSP任意父类可以出现的地方,子类也可以出现任意父类可以出现的地方,子类也可以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 设计 原则
![提示](https://static.bdocx.com/images/bang_tan.gif)