《C++面向对象程序设计》-曹静-电子教案 第04章 类与对象

上传人:E**** 文档编号:89433221 上传时间:2019-05-25 格式:PPT 页数:70 大小:490.50KB
返回 下载 相关 举报
《C++面向对象程序设计》-曹静-电子教案 第04章 类与对象_第1页
第1页 / 共70页
《C++面向对象程序设计》-曹静-电子教案 第04章 类与对象_第2页
第2页 / 共70页
《C++面向对象程序设计》-曹静-电子教案 第04章 类与对象_第3页
第3页 / 共70页
《C++面向对象程序设计》-曹静-电子教案 第04章 类与对象_第4页
第4页 / 共70页
《C++面向对象程序设计》-曹静-电子教案 第04章 类与对象_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《《C++面向对象程序设计》-曹静-电子教案 第04章 类与对象》由会员分享,可在线阅读,更多相关《《C++面向对象程序设计》-曹静-电子教案 第04章 类与对象(70页珍藏版)》请在金锄头文库上搜索。

1、2019年5月25日星期六,C+面向对象程序设计,第4章 类与对象,4.1 面向对象程序设计的基本特点 4.2 建立类与对象 4.3 构造函数和析构函数 4.4 类的作用域和对象的生存期 4.5 类的静态成员 4.6 常类型 4.7 数组、指针与对象 4.8 类的组合,2019年5月25日星期六,C+面向对象程序设计,第四章 类与对象,4.9 友元 项目设计3 面向对象程序设计中类的应用,2019年5月25日星期六,C+面向对象程序设计,4.1 面向对象程序设计的基本特点,4.1.1 抽象 4.1.2 封装 4.1.3 继承 4.1.4 多态,2019年5月25日星期六,C+面向对象程序设计,

2、4.1.1 抽象,抽象是面向对象程序设计的基本原则之一,抽象与具体相对应。 一个汽车的型号就是抽象,它代表了某个汽车的一切属性,包括最大时速,车身长度,全车净重等。抽象就是对具体事物的概括。 在现实中,为了减少必须处理的事情,我们是在某一程度的细节中生活的。在面向对象程序设计中,这种细节程度就叫抽象。,2019年5月25日星期六,C+面向对象程序设计,4.1.2 封装,在面向对象程序设计中抽象可以表示它所描述事物的所有属性和操作,将抽象得到的数据和操作相结合,形成一个有机的整体,就叫做封装。 在C+中,是利用类(class)的形式来实现封装的,可以通过封装,将一部分操作或属性作为类与外部的接口

3、,将其他成员隐蔽起来,以达到对数据访问权限的合理控制,使程序中不同部分之间的相互影响减到最低限度。,2019年5月25日星期六,C+面向对象程序设计,4.1.2 封装,封装可以将数据和代码组织为一个可重用的C+类,在编写代码的时候就可以有效利用已有的成果。 在C+中如果以电视为例进行抽象并封装的话,可以得到如下代码:,class Television /class关键字 类名 /边界 public: /外部接口 void SetChannel(int ChannelNum); /行为,代码成员 void ShutDown(); /行为,代码成员 private: /特定的访问权限 int Cu

4、rrentChannel; /属性,数据成员 ;,2019年5月25日星期六,C+面向对象程序设计,4.1.3 继承,继承是面向对象程序设计中的一种重要机制,该机制自动的将一个类中的操作和数据结构提供给另一个类,这使得程序员可以使用已有类的成分来建立新类。 C+语言中可以让你声明一个新类作为另一个类的派生。派生类(也叫子类)继承其父类的属性和操作。子类也声明了新的操作和属性,除去了一些不适合于自身用途的继承下来的操作和属性。这样,继承可以让你重用父类的代码,专注于子类代码的编写。,2019年5月25日星期六,C+面向对象程序设计,4.1.3 继承,对地球上的各种生物进行抽象,将可以得到如下形式

5、的继承关系图:,2019年5月25日星期六,C+面向对象程序设计,4.1.3 继承,在面向对象程序设计方法出现以前,在标准的C函数库中,基本上不能找到可重用的代码部件。如果一个程序员已经开发了一些程序,现在要开发一个新的程序,实际上不可能用到先前程序中的代码部件,通常这些部件都要修改。 继承可以使已存在的类在不用修改的情况下适应新的应用,掌握C+面向对象程序设计所有方面的关键就在于理解继承。,2019年5月25日星期六,C+面向对象程序设计,4.1.4 多态,多态,是指类中具有相似功能的不同函数使用同一个名称来实现。 以绘图程序为例子,函数可以对一般图形进行操作,而不关心它们是圆、正方形还是三

6、角形。所有的图形都能被绘制、擦除和移动,所以这些函数能简单地发送消息给一个图形对象,而不考虑这个对象如何处理这个消息。 C+中,多态是通过虚函数来实现的。,2019年5月25日星期六,C+面向对象程序设计,4.2 建立类与对象,4.2.1 类的声明与实现 4.2.2 类成员的访问控制 4.2.3 类的成员函数 4.2.4 对象的建立与使用,2019年5月25日星期六,C+面向对象程序设计,4.2.1 类的声明与实现,面向对象程序设计方法的核心是类,利用它可以实现对数据和方法的封装,通过类的继承,能够实现对问题的深入抽象描述。 类相当于一种用户自定义的类型,它和前几章提到的基本类型,如浮点型、整

7、形,有类似的特征。,2019年5月25日星期六,C+面向对象程序设计,4.2.1 类的声明与实现,这里还是以电视为例,声明一个类来描述电视。,class Television public: void SetChannel(int ChannelNum); void ShutDown(); void TurnOn(); private: int CurrentChannel; bool IsOpen; ;,2019年5月25日星期六,C+面向对象程序设计,4.2.1 类的声明与实现,在类的声明中只声明了函数的原形,函数的实现可以在类外定义:,void Television:SetChannel

8、(int ChannelNum) /这里为设置频道相关代码 CurrentChannel= ChannelNum; void Television: ShutDown() /这里为关闭电视相关代码 IsOpen=false; ,2019年5月25日星期六,C+面向对象程序设计,4.2.1 类的声明与实现,void Television: TurnOn () /这里为打开电视相关代码 IsOpen=true; ,这样,我们就完成了对Television类的声明。首先以class关键字声明类的名称;然后声明类的数据成员和函数成员,通过public、private等关键字来说名类的成员的访问控制属性

9、,最后再给出成员函数的实现。,2019年5月25日星期六,C+面向对象程序设计,4.2.1 类的声明与实现,下面再以一个简单例子说明,如何在C+程序中使用一个定义好的类: 这样,我们完成了一次对Television类的使用。首先声明了Television类的变量,也就是完成了Television类的实例化;然后通过类的变量调用类中的成员函数完成相应功能。,Television Tv; / Television类的实例化 Tv.TurnOn(); /调用成员函数打开电视 Tv. SetChannel (8); /调用成员函数选择频道 Tv. ShutDown (); /调用成员函数关闭电视,20

10、19年5月25日星期六,C+面向对象程序设计,4.2.2 类成员的访问控制,在C+中可以通过设置成员的访问控制属性来实现对类成员访问权限的控制。访问控制属性有以下三种: public(公有类型) private(私有类型) protected(保护类型),2019年5月25日星期六,C+面向对象程序设计,4.2.2 类成员的访问控制,公有类型用来声明类的外部接口。公有成员用public关键字声明,任何一个来自外部的访问都必须通过这种外部接口来进行。 private关键字后面声明的就是类的私有类型成员,如果私有成员紧接着类名称,私有关键字可以省略,也就是说在默认情况下类成员会被当作私有类型。只有

11、本类的成员函数可以访问私有类型的成员,而类外的任何访问都是非法的。,2019年5月25日星期六,C+面向对象程序设计,4.2.2 类成员的访问控制,protected关键字定义的保护类型的性质和私有类型的性质相似,其差别在于继承过程中对新类的影响不同。 加入类成员的访问控制附后,可以将电视类写成以下形式:,2019年5月25日星期六,C+面向对象程序设计,4.2.2 类成员的访问控制,class Television public: void SetChannel(int ChannelNum); private: int CurrentChannel; public: void ShutDo

12、wn(); void TurnOn(); private: bool IsOpen; ;,2019年5月25日星期六,C+面向对象程序设计,4.2.3 类的成员函数,1命名成员函数 例:成员函数的定义,class Circle public: void SetRadius(float Radius) /成员函数 m_Radius=Radius; float GetCircumference() /成员函数 return 2*m_Radius*3.14159265; ,2019年5月25日星期六,C+面向对象程序设计,4.2.3 类的成员函数,2. 类中定义的成员函数 上面的例子中,类定义的大括

13、号所包含的2个成员函数是在类中定义。定义在类中的成员函数一般规模都比较小,只有15句语句,而且特别的switch语句不能够使用。它们一般即使没有明确用inline标示,也被认为是内联函数。,2019年5月25日星期六,C+面向对象程序设计,4.2.3 类的成员函数,3. 类之后定义的成员函数 对于语句比较多的成员函数来说,直接把代码放在类定义中使用起来很不便。为了避免这种情况,C+允许在类声明的后面定义成员函数。 例:类外定义成员函数,class Circle public: void SetRadius(float Radius); float GetCircumference(); ;,2

14、019年5月25日星期六,C+面向对象程序设计,4.2.3 类的成员函数,与在类内部定义成员函数时不一样,在类外部定义时,成员函数名前要多加上一个类名。,/类外定义的成员函数 void Circle:SetRadius(float Radius) m_Radius=Radius; float Circle:GetCircumference() return 2*m_Radius*3.14159265; ,2019年5月25日星期六,C+面向对象程序设计,4.2.3 类的成员函数,4. 类成员函数的重载 类成员函数的重载方法与普通函数一样。但由于类名是成员函数名的一部分,所以一个类的成员函数以另

15、一个类的成员函数即使同名,也不能认为是重载。,2019年5月25日星期六,C+面向对象程序设计,4.2.4 对象的建立与使用,类是一种抽象机制,它描述了一类问题的共同属性和行为。在面向对象程序设计中,类的对象也就是具有该类类型的某一特定实体。 例如,人类是一个类,每个不同的人都是人类的实例(instance),或称对象(object)。,2019年5月25日星期六,C+面向对象程序设计,4.2.4 对象的建立与使用,声明一个类的实例(对象)和声明一个一般变量相同,例如: 声明了类及其对象,我们就可以访问对象的公有成员,例如:,Circle c;,c.PrintCircumference();,2019年5月25日星期六,C+面向对象程序设计,4.3 构造函数和析构函数,4.3.1 构造函数 4.3.2 析构函数,2019年5月25日星期六,C+面向对象程序设计,4.3.1 构造函数,对象的初始化可以由类中的一个特殊成员函数来完成,即构造函数。 构造函数的作用是在对象被创建时用特定的方式构造对象,将对象初始化为一个特定的状态,使此对象具有区别于其它对象的特征。构造函数在对象被创建的时候由系统自动调用,它完成的是一个由一般类到具体对象的过程。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号