面向对象设计的特征与原则.ppt_第1页
面向对象设计的特征与原则.ppt_第2页
面向对象设计的特征与原则.ppt_第3页
面向对象设计的特征与原则.ppt_第4页
面向对象设计的特征与原则.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

什么是面向对象?,面向对象的特征与原则,面向对象的误解,误解一:与面向过程的设计方法相比,使用面向对象的方法设计出来的软件一定具有更高的质量。误解二:只要使用了面向对象工具(如:java),就能精通面向对象的设计方法。误解三:面向对象太容易了,不就是在类里面加方法吗?误解四:面向对象太难了,我学不会。,面向对象的误解,误解一:面向对象设计就是设计类。将原来的函数变成类的方法就可以了。设计的本质是:“抽象、封装”。离开了抽象/封装,什么思想都是无本之木,无源之水。误解二:会使用工具的傻瓜,还是傻瓜!工具永远都代替不了思考。,面向对象的误解,误解三:面向对象是通过封装,以“类”做为软件中的基本复用单元,提高其内聚度,降低其耦合度。面向对象不是面向类,类只是面向对象设计的一个结果而已。不加思考的使用类,比不使用类更糟糕。误解四:设计一个优秀的面向对象的系统不是一件简单的事情,需要通过长期的积累。但开始以面向对象的思想来设计现有的模块,则不是一件难事。“从我做起,从现在做起”就可以了。永远不动手,就永远学不会。“千里之行始于足下”,“不怕慢,只怕站”。,面向对象设计的困难,难点一:什么是对象?难点二:如何抽象?难点三:如何封装?,什么是对象?,面向对象世界中的对象指的是什么?应用系统=一组相互作用的实现;对象=一个或多个角色的实现;角色=一组相关的责任;责任=执行一项任务或掌握某种信息的义务;角色就是一组可以相互替换使用的责任。,对象与角色的关系,对象通过责任来体现角色。一个对象可以实现多个角色。为了在系统中占有一席之地,对象必须履行特定的责任,而这些责任则定义了一个有意义的角色。如同演员在电影中所处的地位一样。,对象的类型,在面向对象的世界中根据对象角色的特征,对象可以分为以下几种类型:信息持有者:掌握并提供信息;构造者:维护对象之间的关系以及这些关系相关的信息;服务提供者:执行工作,通常为其它对象提供服务;协调者:通过向其它对象委托任务来响应事件;控制者:进行决策并指导其它对象的行为;接口:连接系统的各个部分,并在他们之间进行信息和请求的转换。,如何抽象?,抽象的目的,系统抽象的目的?1)通过继承机制提供最大限度的代码复用;2)通过接口抽象,封装变化;,接口的抽象与类的抽象的不同?,接口的抽象是从上而下进行的。接口基本上都是在系统做功能分解的时候设计出来的。类的抽象是从下而上进行的,是将一些对象共有的数据及方法提炼到抽象类中。抽象类通常代表一个抽象概念,它提供一个继承的出发点。很多时候,抽象类是重构出来的。,接口抽象的关键点,接口是系统可插入性的保证!系统常见的四个地方需要使用接口:1)UI与应用交互的地方;2)子系统之间,模块之间交互的地方;3)系统层与层之间调用的地方;4)一个功能有多种实现的地方;,类抽象的关键点,抽象类应当拥有尽可能多的共同代码;抽象类应当拥有尽可能少的数据;,使用继承的原则,1、子类是超类的一个特殊种类,而不是超类的一个角色;要区分“Has-A”与“Is-A”的两种关系的不同。前一种使用聚合,后一种才符合继承关系。2、永远不会出现需要将了类换成另一个子类的情况。3、了类具有扩展超类的责任,而不是具有置换(Override)或者注销掉超类的责任。如果子类需要大量地置换掉超类的行为,那么这人子类不应当继承这个超类。4、只在在分类学角度上有意义时,才可以使用继承。不要从工具类继承,尽量不要从具体类继承。,使用继承的原则,一个继承关系尽量只封装一个变化因素。使用继承关系要尽量符合“单一职责法则”,即一个继承关系不应当同时处理两个变化因素。换言之,这个简单实现不能够处理抽象化与实现化都面临变化的情况。,如何封装?,封装的定义,定义一:将信息与仅仅影响这些信息的行为组合在一起,称之为封装。定义二:每个对象都包含它能进行操作所需要的所有信息,这个特性称之为封装,因为对象不必依赖其它对象来完成自己的操作。这样方法和属性包装在类中,通过类的实例来实现。面向对象中的基本封装单元:“类”;,封装的哲学,封装就是将具体的、多变的、复杂的实现封装起来,而把简单的、稳定的、抽象的接口留给客户,给客户提供最大的方便。在设计模式中,强调客户端与服务端的解耦,即服务端的变化不会影响到客户端,客户的行为不依赖于某个特定的服务,客户无需知道服务的具体实现。,封装的哲学,封装的另一个好处是便于复用。封装通常中多层次的,从封装粒度上来讲,封装是针对某一个功能和职责的。同理按照模式编程的单一职责法则,一个类应该仅有一个原因导致其变化。这意味着一个类应该仅有一个演化方向,一个类只封装一个职责。那么对于整个系统来说,变化才是可控的,因为一个职责上的变动仅涉及到一个类。通常我们把类视为最小粒度上的封装结构。,封装的哲学,封装在一定程度上也是“对变化的封装”。在系统开发中,我们应该尽量找到系统的可变因素,将其封装,从而使维护

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论