- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
什么是面向对象? 面向对象的特征与原则 面向对象的误解 误解一:与面向过程的设计方法相比,使用面向对象的方法设计出来的软件一定具有更高的质量。 误解二:只要使用了面向对象工具(如:java),就能精通面向对象的设计方法。 误解三:面向对象太容易了,不就是在类里面加方法吗? 误解四:面向对象太难了,我学不会。 面向对象的误解 误解一:面向对象设计就是设计类。将原来的函数变成类的方法就可以了。 设计的本质是:“抽象、封装”。离开了抽象/封装,什么思想都是无本之木,无源之水。 误解二:会使用工具的傻瓜,还是傻瓜!工具永远都代替不了思考。 面向对象的误解 误解三:面向对象是通过封装,以“类”做为软件中的基本复用单元,提高其内聚度,降低其耦合度。面向对象不是面向类,类只是面向对象设计的一个结果而已。不加思考的使用类,比不使用类更糟糕。 误解四:设计一个优秀的面向对象的系统不是一件简单的事情,需要通过长期的积累。但开始以面向对象的思想来设计现有的模块,则不是一件难事。“从我做起,从现在做起”就可以了。永远不动手,就永远学不会。 “千里之行始于足下”,“不怕慢,只怕站”。 面向对象设计的困难 难点一:什么是对象? 难点二:如何抽象? 难点三:如何封装? 什么是对象? 面向对象世界中的对象指的是什么? 应用系统 = 一组相互作用的实现; 对象 = 一个或多个角色的实现; 角色 = 一组相关的责任; 责任 = 执行一项任务或掌握某种信息的义务; 角色就是一组可以相互替换使用的责任。 对象与角色的关系 对象通过责任来体现角色。 一个对象可以实现多个角色。 为了在系统中占有一席之地,对象必须履行特定的责任,而这些责任则定义了一个有意义的角色。如同演员在电影中所处的地位一样。 对象的类型 在面向对象的世界中根据对象角色的特征,对象可以分为以下几种类型: 信息持有者:掌握并提供信息; 构造者:维护对象之间的关系以及这些关系相关的信息; 服务提供者:执行工作,通常为其它对象提供服务; 协调者:通过向其它对象委托任务来响应事件; 控制者:进行决策并指导其它对象的行为; 接口:连接系统的各个部分,并在他们之间进行信息和请求的转换。 如何抽象? 抽象的目的 系统抽象的目的? 1)通过继承机制提供最大限度的代码复用; 2)通过接口抽象,封装变化; 接口的抽象与类的抽象的不同? 接口的抽象是从上而下进行的。接口基本上都是在系统做功能分解的时候设计出来的。 类的抽象是从下而上进行的,是将一些对象共有的数据及方法提炼到抽象类中。抽象类通常代表一个抽象概念,它提供一个继承的出发点。很多时候,抽象类是重构出来的。 接口抽象的关键点 接口是系统可插入性的保证! 系统常见的四个地方需要使用接口: 1)UI与应用交互的地方; 2)子系统之间,模块之间交互的地方; 3)系统层与层之间调用的地方; 4)一个功能有多种实现的地方; 类抽象的关键点 抽象类应当拥有尽可能多的共同代码; 抽象类应当拥有尽可能少的数据; 使用继承的原则 1、子类是超类的一个特殊种类,而不是超类的一个角色;要区分“Has-A”与“Is-A”的两种关系的不同。前一种使用聚合,后一种才符合继承关系。 2、永远不会出现需要将了类换成另一个子类的情况。 3、了类具有扩展超类的责任,而不是具有置换(Override)或者注销掉超类的责任。如果子类需要大量地置换掉超类的行为,那么这人子类不应当继承这个超类。 4、只在在分类学角度上有意义时,才可以使用继承。不要从工具类继承,尽量不要从具体类继承。 使用继承的原则 一个继承关系尽量只封装一个变化因素。 使用继承关系要尽量符合“单一职责法则”,即一个继承关系不应当同时处理两个变化因素。换言之,这个简单实现不能够处理抽象化与实现化都面临变化的情况。 如何封装? 封装的定义 定义一: 将信息与仅仅影响这些信息的行为组合在一起,称之为封装。 定义二: 每个对象都包含它能进行操作所需要的所有信息,这个特性称之为封装,因为对象不必依赖其它对象来完成自己的操作。这样方法和属性包装在类中,通过类的实例来实现。 面向对象中的基本封装单元:“类”; 封装的哲学 封装就是将具体的、多变的、复杂的实现封装起来,而把简单的、稳定的、抽象的接口留给客户,给客户提供最大的方便。 在设计模式中,强调客户端与服务端的解耦,即服务端的变化不会影响到客户端,客户的行为不依赖于某个特定的服务,客户无需知道服务的具体实现。 封装的哲学 封装的另一个好处是便于复用。封装通常中多层次的,从封装粒度上来讲,封装是针对某一个功能和职责的。 同理按照模式编程的单一职责法则,一个类应该仅有一个原因导致其变化。这意味着一个
您可能关注的文档
- 2.4位移与速度的关系概要.ppt
- 2.4自由落体运动概要.ppt
- 16第16章解释.ppt
- Unit2Englisharoundtheworld新Grammar综述.ppt
- 低碳生态城市全球气候变化影响下未来城市转型发展的战略选择总结.ppt
- Unit2Thisismysister.SectionA-1综述.ppt
- 16和我们一样享受春天课件解释.ppt
- 2.6.2利用一元二次方程解决营销问题概要.ppt
- Unit3Ahealthylife综述.ppt
- 2.8_用纸造一座“桥”概要.ppt
- 电力电缆产品检验规程 .pdf
- DB15_T 2847-2023 云和气溶胶飞机探测规范.docx
- DB15_T 2884-2023 公路波形钢腹板预应力混凝土组合箱梁桥设计与施工技术规范.docx
- DB15_T 2923-2023 规模猪场生物安全建设与管理规范.docx
- DB15_T 2875-2023企业质量信用分级分类准则.docx
- DB15_T 2921-2023 鹰嘴豆栽培技术规程.docx
- DB15_T 2910-2023 中低产田优质燕麦干草生产技术规程.docx
- DB1507_T 93-2023 气象行政许可评价规范.docx
- DB14∕T 1406-2017 赖草栽培技术规程.docx
- 少数民族农村地区食品安全监管的价值、困境与优化——基于整体性治理的视角.pdf
文档评论(0)