- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C第8章类和对象全解
第8章 类和对象 从简单到复杂 人类发展史,是一部从简单到复杂,从容易到困难的探索历史 以交通工具的生产制作为例说明。 复杂的交通工具 对问题的表述从简到繁 单个变量:反映无关联的属性 int a, b, c; 变量的集合 数组:反映同类型相关属性 int a[10], b[20]; 结构体:反映相关属性,可以描述较复杂的事物的属性(不同类型) “时钟”类的定义 8.1 面向对象程序设计方法概述 对象 对象的两个要素: 静态特征:属性;考虑汽车有哪些属性? 动态特征:行为;考虑汽车有哪些行为? 一个系统的多个对象之间通过消息相互联系。 考虑行驶到路口的汽车考到红灯这个信号(消息)时会产生什么样的行为? 注意:汽车是一个大的对象,它是由许多更小的对象组成的,如,发动机、地盘、轮子等。 封装与信息隐蔽 考虑一台电视机,它里面的结构和工作原理我们知道吗?对普通的人来说,需要知道吗? 封装的含义: 将有关的数据和操作代码封装在一个对象中,形成一个基本的单位,各个对象之间相对独立,互不干扰。 将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接受外界的消息。 抽象 什么是汽车?把具有轮子,能滚动前进的陆地交通工具统称为“车子”。 再进一步,把用汽油发动机驱动的车子抽象为“汽车”,把用马拉的车子抽象为“马车”,用脚蹬的车子抽象为脚踏车。 类与对象:类是对象的抽象,对象是类的特例,是类的具体表现形式。 继承与重用 现代工业高效的重要原因:重用性,一件工业产品的生产通常都不是从零开始的,总是尽可能利用前有的成果。那么软件产品呢,是不是也可以实现重用?怎么实现呢? 重用要通过继承机制来实现。 继承 多态性 考虑,停在路口的汽车和马车,当看到左转向的信号灯由红灯变为绿灯时,分别拐向机动车道和非机动车道。 多态性:由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。 8.1.2 面向对象程序设计的特点 面向过程程序设计:围绕功能,面向函数; 面向对象程序设计:围绕对象的设计,面向对象; 面向对象程序设计,程序设计者的任务: 设计所需的各种类和对象,即决定把哪些数据和操作封装在一起; 考虑怎样向有关对象发送消息,以完成所需的任务。 8.1.3 类和对象的作用 基于对象:Object-Based,以类和对象为基础,程序的操作时围绕对象进行的。 面向对象:Object-Oriented,在基于对象的基础上,利用继承机制和多态性,实现重用性。 类是所有面向对象的语言的共同特征,所有面向对象的语言都提供了这种类型 一个有一定规模的C++程序是由许多类所构成的 一个有一定规模的C++程序在执行时表现为许多相关的对象相互之间的作用 8.2 类的声明和对象的定义 8.2.1 类和对象的关系 类与对象的关系如同结构体类型与结构体变量的关系。 具体来说,就是:类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。 8.2.2 声明类类型 类声明方法及例子如下: 成员访问限定符 public:既可以被本类中的成员函数访问,也可以被类的作用域内的其他函数访问。 private:只能被本类中的成员函数访问,在类外(友元类例外,第9章)不能被访问。(注意理解类外的含义) protected:不能被类外访问,但可以被派生类的成员函数访问。 成员访问限定符的声明次序是任意的。请分析以下例子中各成员的访问属性。 注意理解“类外”的含义 理解“类的作用域” 理解类内部的作用域 类是一个自成一体的“小世界”,其中的标识符(包括数据成员和成员函数)作用范围是类内部: 类中的成员可以访问同一类的其它成员; 类内部成员函数中定义的局部变量可以屏蔽同名的数据成员; 8.2.3 定义对象的方法 与使用结构体类型定义结构体变量类似 关于对象数据成员的初始化 注意:与结构体变量初始化不同的是不能在定义对象时对对象的私有数据成员用直接赋值的形式进行初始化。 对对象的私有成员的初始化要使用构造函数(第9章)来实现。 使用对象(及其成员) 使用对象的成员(包括数据成员和成员函数)方法,使用成员运算符:对象.成员 8.2.4 类和结构体类型的异同 在C++里,从功能上说,类类型和结构体类型完全一样(在结构体里也可以定义函数),在C++保留结构仅仅是为了与C语言兼容。 用struct声明的类和用class声明的类的区别:用struct声明的类,其成员访问属性默认为public,用class声明的类,其成员访问属性默认为private。 一般来说,对简单的类(不包含成员函数),用struct来定义,反之,用class来定义。 8.3 类的成员函数 8.3.1 成员函数的性质 接口函数:需要被外界调用的成员函数,必须设置为pub
文档评论(0)