第8章面向对象程序设计5.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章面向对象程序设计5

第8章 面向对象程序设计 面向对象的特点主要概括为抽象性、继承性、多态性和封装性。本章我们将围绕这4个特点讲解面向对象程序设计(OOP)的基本方法。 8.1 对象 8.2 继承 8.3 多态 8.4 接口 8.5 本章小结 8.1 对象 8.1.1 理解对象 8.1.2 使用对象 8.1.3 对象之间的关系 8.1.1 理解对象 面向对象程序设计中的对象与客观世界中的对象并不是完全相同的概念,他们既有联系又有区别。所以深刻理解编程中的对象本质将有利于实践面向对象编程和开发。 单纯的结构化思维方式对客观世界的反映不太自然和直接,不利于解决关系复杂的问题。因此通过理解对象的本质,将有利于彻底地改变这种思维方式,以适应面向对象的编程。 8.1.1 理解对象 从下面几个方面来理解OOP中对象的本质: 对象可以视为一组相关的操作代码和数据的组合 对象是类的实例 对象可以互相协作,共同完成任务 通过继承、组合或封装等方式可以产成新的对象 对象根据特定的意义和用途有不同的划分方法 8.1.2 使用对象 1. 一个面向对象的果园系统 8.1.2 使用对象 2. 对象的创建和销毁 (1) 对象的生命期 对象是通过类创建的,对象是类的动态实例。每个对象都有生命期。一个对象按其生命期来分析,一般有三个阶段,出生、活动、死亡。而我们在编程中要做的对应为:创建(初始化)、运行、销毁。 8.1.2 使用对象 (2) 对象的构造 通常,当调用构造函数时,该函数返回一个新分配内存并初始化了的类的实例。创建对象时,构造函数完成了以下工作: 首先在堆中开辟一块区域用于存贮对象。 然后对这块区域进行缺省初始化。 执行构造函数中用户编写的代码。 返回一个新分配好的并初始化了的实例对象。返回值的类型必须就是该类的类型。 8.1.2 使用对象 (3) 对象的析构 析构函数的作用与构造函数正好相反,它用于销毁对象并指定销毁对象时的动作,通常是释放对象所占用的内存空间及相关的其它资源,比如打开了文件、占用了数据库连接。 8.1.2 使用对象 3. 对象和对象变量 (1) 值和引用 我们知道,从语义上讲,对象是类的实例,类是创建对象的模板;从语言上讲,对象是类这种数据类型的变量,对象在内存中占有空间。 (2) 对象变量是对象的一个引用 要使用对象,首先必须创建它们,并指定它们的初始状态,然后对对象施加方法。 8.1.3 对象之间的关系 对象之间的关系有: 合成关系(“has—a”)它是指新对象由已有的对象组合而成,或新对象包含有其他对象。 继承关系(“is—a”) 用来表示对象的类之间所具有的泛化和特化关系。 依赖关系(“use—a”)如果一个对象的方法操作了另一个对象,那么这个对象就依赖于另一个对象。 8.2 继承 8.2.1 使用继承 8.2.2 继承与合成 8.2.1 使用继承 对象的继承是一种在保持对象差异性的同时共享对象相似性的复用。它是源自类的泛化机制。这种抽象机制允许类之间共享代码,大大减少了代码长度并且使软件易于维护。对象通过继承,保证了实现部分紧内聚和松耦合的良好特性。 8.2.1 使用继承 1. 基类与派生类 8.2.1 使用继承 2. 继承在果园系统中的使用 8.2.2 继承与合成 在面向对象程序设计中,通过合成或通过继承都可以在不同的环境中重用已有的设计和实现。 继承重用是通过扩展一个已有对象的实现来得到新的功能,基类明显地抽象并提取共同的属性和方法,而派生类通过增加新的属性和方法来扩展基类的实现。由此可见继承重用有以下优点: 新的实现较为容易,因为基类的大部分功能可以通过继承关系自动进入派生类。 修改或扩展继承而来的实现较为容易 8.2.2 继承与合成 继承是一种类型的重用。初学面向对象的程序员往往十分热衷于继承,好像继承就是最好的重用手段。随着时间的推移和开发经验的积累,你会逐渐认识到了继承关系有以下缺点: 继承重用破坏封装,因为继承将基类的实现细节暴露给派生类。 如果基类的实现发生改变,那么派生类的实现也不得不发生改变。 从基类继承而来的实现是静态的,只能在编译期做出改变,而无法在运行期发生改变,因此没有足够的灵活性。 8.2.2 继承与合成 把继承关系重构为合成关系将系统对变化的适应力从静态提升到动态,提高了设计的灵活性和代码的重用性。由于合成可以将已有的对象组合到新对象中,使之成为新对象的一部分,因此新的对象可以调用已有对象的功能。 8.2.2 继承与合成 这样做有下面的好处: 新对象存取组成对象的惟一方法是通过组成对象的接口。 这种重用是黑箱重用,因为组成对象的内部细节是新对象所看不见的。 这种重用支持包装。 这种重用所需

文档评论(0)

jyf123 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档