- 1、本文档共108页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象方法与技术-Part4-OO设计原则讲述
面向对象方法与技术
4/10/2017
2
课程内容
Part 1: 面向对象原理
第一章 面向对象的引入和发展
第二章 面向对象基本概念和程序设计
Part 2: UML
第三章 UML基础
Part 3: 面向对象设计
第四章 面向对象设计模式
第五章 面向对象设计原则
第5章 面向对象设计原则
4/10/2017
4
设计目标
可扩展性(Extensibility):新功能易加入系统。
灵活性(Flexibility):允许代码修改平稳发生,不会涉及很多其他模块。
可插入性(Pluggability):容易将一个类换为另一个具有同样接口的类。
4/10/2017
5
使一个系统可在更高的层次上提供了可复用性
抽象化和继承:使概念和定义可复用
多态:使实现和应用可复用
抽象化和封装:可保持和促进系统的可维护性
面向对象设计
4/10/2017
6
面向对象设计中,可维护性复用是以设计原则和设计模式为基础的。
面向对象复用
4/10/2017
7
1. 开闭原则OCP:Open-Closed Principle
2. 里氏替换原则LSP:Liskov Substitution Principle
3. 依赖倒转原则DIP:Dependency Inversion Principle
4. 接口隔离原则ISP:Interface Segregation Principle
5. 组合复用原则CRP:Compositoin Resuse Principle
6. 迪米特法则LoD:Law of Demeter
面向对象复用原则
4/10/2017
8
软件组成实体应该是可扩展的,但是不可修改的。( Software Entities Should Be Open For Extension, But Closed For Modification)
1.开-闭原则OCP
4/10/2017
9
开放-封闭法则认为应该试图去设计出永远也不需要改变的模块。
关键在于抽象化:可给系统定义一个一劳永逸,不再更改的抽象设计,此设计允许有无穷无尽的行为在实现层被实现。抽象层预见所有扩展。
PC外设
开-闭原则
设计原则:开-闭原则、封装可变性
Bertrand Meyer
对象技术大师
法国工程院院士
苏黎世工学院计算机系教授
发明了Eiffel语言和按契约设计(Design by Contract)的思想
早年参与了Z形式语言的设计
名著《面向对象软件构造》
10
设计原则:开-闭原则、封装可变性
玉帝遵照“开-闭”原则维护天庭秩序
当年孙悟空大闹天空,向天庭发出挑战:“皇帝轮流做,明年到我家......只教他搬出去,将天宫让与我!”
太白金星给玉皇大帝
建议道:“降一道招安
圣旨,把他宣来上界...
与他籍名在箓...
一则不动众劳师,
二则收仙有道也。”
11
设计原则:开-闭原则、封装可变性
分析
“不动众劳师”、不破坏天规就是“闭”
收仙有道就是“开”
招安,就是玉帝的“开-闭”原则:既让孙悟空满意,又不必更改天庭现有的秩序
12
设计原则:开-闭原则、封装可变性
分析
现有的天庭秩序是系统的最高抽象层
弼马温这个职位只是具体的实现层
招安的关键就是不允许更改现有的天庭秩序,但是允许将妖猴纳入到文武百官中,从而扩展了这一秩序的具体实现
13
设计原则:开-闭原则、封装可变性
“封装可变性原则”
gof:“考虑你的设计中什么可能会发生变化......考虑你允许什么发生变化而不让这一变化导致重新设计”
Shalloway:“发现变化点,并封装之”
一种可变性不应散落在代码的很多角落
一种可变性不应当与另一种可变性混合在一起
14
设计原则:开-闭原则、封装可变性
设计模式对“开-闭”原则的支持
比如Bridge桥梁模式:将抽象部分和实现部分分别封装,可以分别独立变化
15
设计原则:开-闭原则、封装可变性
对“开-闭”原则支持的不好的例子
java.util.Calendar
16
java提供的描述历法的抽象类
描述公历的子类
我们希望再派生出一个子类,用于描述阴历
设计原则:开-闭原则、封装可变性
问题:
Calendar只定义了适用于公历的常量和方法
17
public final static int SUNDAY = 1;
public final static int MONDAY = 2;
...
public final static int JANUARY = 0;
public final static int FEBRUARY = 1;
...
public void setFistDayOfWeek(int value);
public int getFirstDayOfWeek();
...
设计
您可能关注的文档
- 非煤矿山六大系统讲述.ppt
- 非谓语动词精讲与精炼讲述.ppt
- 非谓语动词练习及答案讲述.doc
- 非谓语动词复习课件(32张PPT)讲述.ppt
- 非谓语动词用法的高考考查(共14张PPT)讲述.ppt
- 非谓语动词---V.-ing讲述.ppt
- 非谓语动词考点易混点讲述.ppt
- 非谓语动词经典用法讲解讲述.doc
- 食品生许可证分类目录详解.docx
- 非谓语动词课件讲述.ppt
- 2024至2030年中国人造棉面料行业投资前景及策略咨询报告.docx
- 重庆市渝中区遴选公务员2024年国家公务员考试考试大纲历年真题10340笔试历年典型考题及解题思路附.docx
- 2024至2030年中国甲基苯乙酮行业深度调研及发展预测报告.docx
- 2024至2030年中国羚羊角类饮片行业深度调查与前景预测分析报告.docx
- 重庆市面向中国农业大学定向选调2024届大学毕业生2024年国家公务员考试考试大纲历年真题14笔试历.docx
- 重庆市面向西北工业大学定向选调2024届大学毕业生00笔试历年典型考题及解题思路附答案详解.docx
- 中国不动杆菌感染治疗药行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- 2024至2030年全球与中国ETL软件市场现状及未来发展趋势.docx
- 初中八年级(初二)生物下册期末考试1含答案解析.docx
- 干簧式继电器项目申请报告.docx
文档评论(0)