C++备课讲义第9章

上传人:油条 文档编号:24895631 上传时间:2017-12-08 格式:PPT 页数:56 大小:328KB
返回 下载 相关 举报
C++备课讲义第9章_第1页
第1页 / 共56页
C++备课讲义第9章_第2页
第2页 / 共56页
C++备课讲义第9章_第3页
第3页 / 共56页
C++备课讲义第9章_第4页
第4页 / 共56页
C++备课讲义第9章_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《C++备课讲义第9章》由会员分享,可在线阅读,更多相关《C++备课讲义第9章(56页珍藏版)》请在金锄头文库上搜索。

1、1,第九章 类和对象,面向对象的程序设计,2,按钮对象:按钮的内容、大小,按钮的字体、图案等等针对按钮的各种操作,创建、单击、双击、拖动等,班级对象:班级的静态特征,所属的系和专业、班级的人数,所在的教室等。这种静态特征称为属性;班级的动态特征,如学习、开会、体育比赛等,这种动态特征称为行为。,3,面向对象中的主要概念,1. 对象从一般意义上讲,对象是现实世界中一个客观存在的事物,它可以是具体的事物,也可以是抽象的规则、计划或事件。对象是构成世界的一个独立单位。2. 对象的属性和行为。任何一个对象都具有属性和行为这两个要素。属性是用来描述对象的静态特征的一组数据,也可以说是描述对象的状态。行为

2、是用来描述对象动态特征的一个操作序列,用于改变对象的状态,也可以是对象自身与外界联系的操作。对象实现了数据和行为的结合,使数据和行为封装于对象的统一体中,4,3. 类类是对象抽象的结果,即对具有相同属性和行为的一个或一组相似的对象,忽略这些对象的个别的、非本质的特征,找出这些对象的本质特征,从而确定对象的共性,得出一个抽象的概念。 4. 封装封装就是把对象的属性和行为结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。封装反映了这样一个基本事实:事物的静态特征和动态特征是事物不可分割的两个侧面。,5,5. 继承继承是指一个类可以直接使用另一个类的属性和行为。这是类之间的一种关系。在定义和实现

3、一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。6. 多态多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。,6,7. 消息和方法。对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,该消息包含了接收对象去执行某种操作的信息。而类中操作的实现过程叫做方法,一个方法由方法名、参数、方法体组成。,7,面向对象的程序设计,简单地说,面向对象的分析设计方法可以分成以下4个步骤。 找出问题中的对象和类; 确定每个对象和类别

4、的功能,如具有哪些属性,具有哪些行为等; 找出这些对象和类别之间的关系,确定对象之间的消息通信方式、类之间的继承和组合等关系; 用程序代码实现这些对象和类。,8,类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的运算封装在一起的 集合体。,类的定义,类将一些数据及与数据相关的函数封装在一起,使类中的数据得到很好的“保护”。在大型程序中不会被随意修改。,9,类的定义格式:class 类名 private : 成员数据;成员函数; public : 成员数据;成员函数; protected:成员数据;成员函数;;,关键字,类名,私有,公有,保护,class Student privat

5、e : char Name20; float Math; float Chiese; public : float average; void SetName(char *name); void SetMath(float math); void SetChinese(float ch); float GetAverage(void);,分号不能少,10,用关键字private限定的成员称为私有成员,对私有成员限定在该类的内部使用,即只允许该类中的成员函数使用私有的成员数据,对于私有的成员函数,只能被该类内的成员函数调用;类就相当于私有成员的作用域。,11,用关键字public限定的成员称为公

6、有成员,公有成员的数据或函数不受类的限制,可以在类内或类外自由使用;对类而言是透明的。,12,而用关键字protected所限定的成员称为保护成员,只允许在类内及该类的派生类中使用保护的数据或函数。即保护成员的作用域是该类及该类的派生类。,13,14,每一个限制词(private等)在类体中可使用多次。一旦使用了限制词,该限制词一直有效,直到下一个限制词开始为止。,如果未加说明,类中成员默认的访问权限是private,即私有的。,15,class Studentchar Name20;float Math;float Chiese; public :float average; void Se

7、tName(char *name);void SetMath(float math);void SetChinese(float ch); float GetAverage(void);,均为私有权限,均为公有权限,16,class A float x, y; public: void Setxy(float a,float b) x=a; y=b; void Print(void) coutxtyendl; ;,A,私有数据,公有函数,在类外不能直接使用 x 或 y ,必须通过Setxy()给 x 或 y 赋值,通过Print()输出 x 或 y 。,17,成员函数与成员数据的定义不分先后,

8、可以先说明函数原型,再在类体外定义函数体。,class A float x, y; public: void Setxy(float a,float b) x=a; y=b; void Print(void) coutxtyendl; ;,在类体内定义成员函数,18,class A float x, y; public: void Setxy(float a,float b); void Print(void);;,void A:Setxy(float a,float b) x=a; y=b; void A:Print(void) coutxtyendl; ,在类体内说明成员函数原型,在类体外

9、定义成员函数,19, : (). /函数体,在类体外定义成员函数的格式:,void A:Setxy(float a,float b) x=a; y=b; ,函数类型,类名,函数名,形参列表,函数体,20,在定义一个类时,要注意如下几点:1、类具有封装性,并且类只是定义了一种结构(样板),所以类中的任何成员数据均不能使用关键字extern,auto或register限定其存储类型。2、在定义类时,只是定义了一种导出的数据类型,并不为类分配存储空间,所以,在定义类中的数据成员时,不能对其初始化。如:class Test int x=5,y=6; /是不允许的 extern float x; /是不

10、允许的 ,21,在C+语言中,结构体类型只是类的一个特例。结构体类型与类的唯一的区别在于:在类中,其成员的缺省的存取权限是私有的;而在结构体类型中,其成员的缺省的存取权限是公有的。,22,内联成员函数,当我们定义一个类时,可以在类中直接定义函数体。这时成员函数在编译时是作为内联函数来实现的。,同时,我们也可以在类体外定义类的内联成员函数,在类体内说明函数,在类体外定义时,在成员函数的定义前面加上关键字inline。,class A float x, y; public: void Setxy(float a,float b); void Print(void);;,inline void A:

11、Setxy(float a,float b) x=a; y=b; inline void A:Print(void) coutxtyendl; ,说明该成员函数为内联,23,对象,只有在定义了属于类的变量后,系统才会为类的变量分配空间。,在定义类时,只是定义了一种数据类型,即说明程序中可能会出现该类型的数据,并不为类分配存储空间。,类的变量我们称之为对象。,对象是类的实例,定义对象之前,一定要先说明该对象的类。,24,不同对象占据内存中的不同区域,它们所保存的数据各不相同,但对成员数据进行操作的成员函数的程序代码均是一样的。,存储类型类名 对象1,对象2,.;,Student st1,st2;

12、,对象的定义格式:,类名,对象名,在建立对象时,只为对象分配用于保存数据成员的内存空间,而成员函数的代码为该类的每一个对象所共享。,25,对象的定义方法同结构体定义变量的方法一样,也分三种,当类中有数据成员的访问权限为私有时,不允许对对象进行初始化。,class A float x,y;public: void Setxy( float a, float b ) x=a; y=b; void Print(void) coutxtyendl; a1,a2;,void main(void) A a3,a4;,定义全局对象,定义局部对象,26,对象的使用,一个对象的成员就是该对象的类所定义的成员,有

13、成员数据和成员函数,引用时同结构体变量类似,用“.”运算符。,27,class A float x,y;public: float m,n; void Setxy( float a, float b ) x=a; y=b; void Print(void) coutxtyendl; ;,void main(void) A a1,a2; /定义对象 a1.m=10; a1.n=20; /为公有成员数据赋值 a1.Setxy(2.0 , 5.0); /为私有成员数据赋值 a1.Print();,10,20,2.0,5.0,输出: 2 5,28,用成员选择运算符“.”只能访问对象的公有成员,而不能访

14、问对象的私有成员或保护成员。若要访问对象的私有的数据成员,只能通过对象的公有成员函数来获取。,29,class A float x,y;public: float m,n; void Setxy( float a, float b ) x=a; y=b; void Print(void) coutxtyendl; ;,void main(void) A a1,a2; a1.m=10; a1.n=20;/为公有成员数据赋值 a1.x=2; a1.y=5; a1.Setxy(2.0,5.0); a1.Print();,必须通过类内公有函数访问私有数据成员,非法,私有成员不能在类外访问,30,同类型的对象之间可以整体赋值,这种赋值与对象的成员的访问权限无关。,

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

当前位置:首页 > 行业资料 > 其它行业文档

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