网站大量收购闲置独家精品文档,联系QQ:2885784924

重新认识面向对象.ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

面向对象编程有三个特性:封装,继承,多态VB中也有类,它的类也支持封装和简单的继承,但是它不支持所有的继承语义和多态,因此VB只能被称为基于对象的语言一种语言只有同时具备这三种特性才能被称为面向对象的语言面向对象编程的特性01将程序按照一定的逻辑分成多个互相协作的部分02并将对外界有用的稳定的部分暴露出来,而将会发生的改变隐藏起来03外界只能通过暴露的部分向这个对象发送操作请求从而享受对象提供的服务04而不必管对象内部是如何运行的,这就是封装封装-1封装-2理解封装是理解面向对象的第一个步骤,40%的程序员对面向对象的理解仅停留在封装这个层次01继承也称为派生,继承关系中,被继承的称为基类,从基类继承而得的被称为派生类或者子类02继承是保持对象差异性的同时共享对象相似性的复用03能够被继承的类总是含有并只含有它所抽象的那一类事务的共同特点04继承提供了实现复用,只要从一个类继承,我们就拥有了这个类的所有行为继承-1继承-2理解继承是理解面向对象的第二个步骤,50%的程序员对面向对象的理解仅停留在继承这个层次多态是“允许用户将父对象设置成为一个或更多的它的子对象相等的技术,赋值后,基类对象就可以根据当前赋值给它的派生类对象的特性以不同的方式运作”多态扩大了对象的适应性,改变了对象单一继承的关系多态是行为的抽象,它使得同名方法可以有不同的响应方式,可以通过名字调用某一方法而无需知道哪种实现将被执行,甚至无需知道执行这个实现的对象类型多态-1多态是面向对象编程的核心概念,只有理解了多态,才能明白什么是真正的面向对象,才能真正发挥面向对象的最大能力不过可惜的是,只有极少数程序员能真正理解多态壹贰多态-2ABC继承关系组合关系对象之间有两种最基本的关系:对象之间的关系01020304继承关系可以分为两种:一种是类对接口的继承,被称为接口继承另一种是类对类的继承,被称为实现继承继承关系是一种“泛化/特化”关系,基类代表一般,而派生类代表特殊继承关系组合关系组合是由已有的对象组合而成新对象的行为,组合只是重复运用既有程序的功能,而非重用其形式组合与继承的不同点在于它表示了整体和部分的关系比如电脑是由CPU、内存、显示器、硬盘等组成的…1派生类是基类的一个特殊种类,而不是基类的一个角色2语义上的“继承”表示“is-a”(是一种)的关系,派生类“is-a”基类,这是使用继承关系的最基本前提继承,组合语义上的“继承”表示“是一种(is-a)”的关系。很多人体会到了继承在代码重用方面的优点,而忽视了继承的语义特征可以使用“里氏替换原则-LSP”来防止滥用继承的情况就发生了继承!!??里氏替换原则-LSP如果类A是类B的基类,那么类B应该可以在任何A出现的地方取代A继承实例–客户信息系统1某企业中有一套信息系统,其中有一个“客户(Customer)”基础资料,里边记录了客户的名称、地址、email等信息后来系统要进行升级,增加一个“供应商(Supplier)”基础资料,相比客户只是多了一个“银行帐号”设计人员很自然就把“供应商”设置成“客户”客户的子类到了年终,老板要求给所有的客户通过Email发送新年祝福由于“供应商”是一种(is-a)“客户”,所以系统就给“供应商”和“客户”都发送了新年祝福第二天很多供应商都感动流涕的给老板打电话“谢谢老板呀,我们供应商每次都是求着贵公司买我们的东西,到了年终你们还忘不了我们,真是太感谢了!”老板很茫然,找来开发人员,开发人员这才意识到问题于是在发送Email的程序里做了判断“如果是供应商则不发送,否则发送”,一切ok了继承实例–客户信息系统2继承实例–客户信息系统3到了年初,老板要求给所有很长时间没有购买他们产品的“客户”,打电话进行问候和意见征集由于“供应商”是一种(is-a)“客户”,所以第二天电话里不断出现这样的回答:“你们搞错了吧,我们是你们的供应商呀!”老板大发雷霆,开发人员这才意识到问题的严重性在所有涉及到客户的地方都加了判断“如果是供应商则……”一共修改了60多处,当然由于疏忽遗漏了两处,所以后来又出了一次类似的事故继承实例–客户信息系统4更好的解决方案应该是,从“客户”和“供应商”中抽取一个共同的基类“外部公司”出来:派生类具有扩展基类的责任,而不是具有覆盖(override)基类的责任如果派生类需要大量的覆盖或者替换掉基类的行为,那么就不应该在两个类之间建立继承关系派生类不应大量覆盖基类的行为继承实例–库存管理系统1客户需求:01一张入库单

文档评论(0)

135****3907 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档