面向对象程序设计及C++ 第2版 朱立华 俞琼 第5章_类与类之间的关系new新.ppt

面向对象程序设计及C++ 第2版 朱立华 俞琼 第5章_类与类之间的关系new新.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主讲: 面向对象程序设计及C++ 第五章 类与类之间的关系 本章作业 作业本:本章习题:一、二、 三(1,2)、四、五(1 、3) 本章内容安排 5.1 类的组合 5.2 类的依赖 5.3 类的继承与派生 5.4 程序实例——师生信息管理系统 本章小结 5.1 类的组合 在日常生活中,一个物体有可能由多个物体组成。 一台汽车由发动机、轮胎、座椅等组成 一只手机由电路板、外壳和显示屏等组成 体现的主要特征 一个对象中包含了其它对象 面向对象程序设计为描述这种关系,引入组合机制。 对象成员的构造与析构 对象成员在创建时需要调用构造函数,在退出内存时需要调用析构函数。 课本例5.1。 总结 对象与它内部的对象成员生命周期相同。当对象被创建时,对象成员也会被创建,对象析构时,对象成员也一同被析构。 创建对象时,首先调用对象成员的构造函数,再调用对象自身的构造函数。析构时顺序完全相反。 对象成员的构造与析构 如果对象成员的构造函数需要传入参数,则采用初始化表中来解决。 成员对象名(实际参数表) 课本例5.2。 a1对象在a2对象之前被创建。这说明,对象成员构造函数的调用次序与初始化表中出现的次序无关。它应与对象成员在类中定义的次序一致。 5.2 类的依赖 在日常生活中,一个对象或物体在实现某一功能时,通常要借助于其它对象或物体的协助。 修理工使用扳手拧开了盖子 顾客使用信用卡付账等。 体现的特征 被抽象为一个对象中某一功能的实现需要另一个对象。 类的依赖 在面向对象语境中,将其阐述为依赖关系 修理工“依赖”扳手工作 顾客“依赖”信用卡付账 课本例5.3。 类的依赖 依赖关系与组合关系的区别 课本例5.3实现二。 组合关系中,对象与对象成员具有相同的生命周期,依赖关系则未必。 在实际设计软件时,既要考虑语法关系,也要考虑语义是否符合实际 5.3 类的继承与派生 继承是社会生活中一个很普遍的现象。 每个人都或多或少地从祖辈和父母那里继承了一些体貌特征。 每个人也并不完全是父母的复制。总存在一些特性是他所独有的,在父母身上并没有出现。 类的继承与派生 面向对象程序设计把这个过程抽象: 一个新定义的类具有某个或某些旧类的功能与成员。 但它又不完全与旧类相同,而是额外添加了一些功能或成员。 在C++中,旧类称为基类,也称父类,新类称为派生类,也称子类。 继承与派生 继承与派生都是指在已有类的基础上,增加新特性而产生新类的过程。 基类与派生类 单一继承与多重继承 根据基类数目的不同,继承通常分为单一继承和多重继承两大类。 单一继承是指派生类只有一个基类, 多重继承是指派生类有多个基类。 派生类的定义 class 派生类名:[继承方式] 基类名1 [,[继承方式] 基类名2,…,[继承方式] 基类名n ] { 派生类新增的数据成员和成员函数定义 }; 单一继承,只有一个基类名。多重继承中,多个基类之间以逗号分隔。 继承方式有三种:public(公有)、private(私有)和protected(保护),缺省为私有继承。 继承机制的优势 提高了代码的可重用性。 直接重用已有的代码 减轻编程的工作量,提高开发效率 提高软件的安全性 例 继承方式 主要区别:基类成员的访问属性在派生类中会发生不同的变化。 公有继承 保护继承 私有继承 继承方式的总结 基类的private成员不可以被继承,在派生类中无法直接访问。 基类的public和protected成员可以被继承,或者属性保持不变、或者同时变成protected或private,在派生类中可以访问。 单继承举例:5.4 在派生类中,继承来的成员跟新定义的成员一样,访问没有任何限制。 派生类无法直接访问基类的私有成员,但可以通过基类的公有成员来间接访问。 基类的公有成员在公有继承后属性保持不变,因此在类外可以直接访问到,比如例5.4中的obj.show( )。 多重继承举例:5.5 protected继承和private继承改变了基类成员的访问属性,限制了进一步派生,因此在实际编程中极少使用。 派生类对象的构造与析构 课本例5.6 定义一个派生类对象时,构造函数的调用顺序如下: 基类的构造函数 派生类对象成员的构造函数(按定义顺序) 派生类构造函数 析构函数的调用次序正好与之相反。 基类构造函数的参数传递 初始化表 课本例5.7 说明: 派生类只需负责直接基类构造函数的调用。若直接基类构造函数不需要提供参数,则无需在初始化列表中列出,但实质上也是会自动调用基类构造函数的。 基类构造函数的调用通过初始化表来完成。当创建一个对象时,实际调用次序为声明派生类时各基类出现的次序,而不是各基类构造函数在初始化表中

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档