![面向对象编程类和对象_第1页](http://file4.renrendoc.com/view/6cffdd8d79758d726c22a1b980b07785/6cffdd8d79758d726c22a1b980b077851.gif)
![面向对象编程类和对象_第2页](http://file4.renrendoc.com/view/6cffdd8d79758d726c22a1b980b07785/6cffdd8d79758d726c22a1b980b077852.gif)
![面向对象编程类和对象_第3页](http://file4.renrendoc.com/view/6cffdd8d79758d726c22a1b980b07785/6cffdd8d79758d726c22a1b980b077853.gif)
![面向对象编程类和对象_第4页](http://file4.renrendoc.com/view/6cffdd8d79758d726c22a1b980b07785/6cffdd8d79758d726c22a1b980b077854.gif)
![面向对象编程类和对象_第5页](http://file4.renrendoc.com/view/6cffdd8d79758d726c22a1b980b07785/6cffdd8d79758d726c22a1b980b077855.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于面向对象编程类和对象第一页,共三十二页,2022年,8月28日第2章类和对象2.1面向对象程序设计方法概述2.2类的声明和对象的定义2.3类的成员函数2.4对象成员的引用第二页,共三十二页,2022年,8月28日2.1面向对象程序设计方法概述抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。先注意问题的本质及描述,其次是实现过程或细节。数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。代码抽象:描述某类对象的共有的行为特征或具有的功能。抽象的实现:通过类的声明。第三页,共三十二页,2022年,8月28日2.1面向对象程序设计方法概述抽象实例——钟表数据抽象:intHour,intMinute,intSecond代码抽象:SetTime(),ShowTime()classClock{public:voidSetTime(intNewH,intNewM,intNewS);
voidShowTime();private:intHour,Minute,Second;};钟表类第四页,共三十二页,2022年,8月28日2.1面向对象程序设计方法概述封装:将抽象出的数据成员、代码成员相结合,将它们视为一个整体。目的是曾强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。实现封装:类声明中的{}第五页,共三十二页,2022年,8月28日2.1面向对象程序设计方法概述继承与派生是C++中支持层次分类的一种机制,允许程序员在保持原有类特性的基础上,进行更具体的说明。第六页,共三十二页,2022年,8月28日2.1面向对象程序设计方法概述多态:同一名称,不同的功能实现方式目的:达到行为标识统一,减少程序中标识符的个数。实现:重载函数和虚函数第七页,共三十二页,2022年,8月28日2.2类的声明和对象的定义classA{intx,y;public:A(inta){x=a;cout<<“1\n”;}A(inta,intb){x=a,y=b;cout<<“2\n”;}};Aa1(3);voidf(void){Ab(2,3);}voidmain(void){Aa2(4,5);f();f();}1222第八页,共三十二页,2022年,8月28日2.2类的声明和对象的定义类的定义类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的运算封装在一起的集合体。类将一些数据及与数据相关的函数封装在一起,使类中的数据得到很好的“保护”。在大型程序中不会被随意修改。第九页,共三十二页,2022年,8月28日类的定义格式:class类名{private:
成员数据;
成员函数;
public:
成员数据;
成员函数;
protected:
成员数据;
成员函数;};关键字类名私有公有保护classStudent{private:charName[20];floatMath;floatChiese; public:floataverage;voidSetName(char*name);voidSetMath(floatmath);voidSetChinese(floatch);floatGetAverage(void);};分号不能少2.2类的声明和对象的定义第十页,共三十二页,2022年,8月28日2.2类的声明和对象的定义priviate限定的成员称为私有成员,私有成员只能在该类的内部使用,即私有成员数据只允许该类中成员函数使用,私有成员函数只能被该类内的成员函数调用;类就相当于私有成员的作用域。public限定的成员称为公有成员,公有成员的数据或函数不受类的限制,可以在类内或类外自由使用;对类而言是透明的。protected限定的成员称为保护成员,只允许在类内及该类的派生类中使用保护的数据或函数。即保护成员的作用域是该类及该类的派生类。第十一页,共三十二页,2022年,8月28日2.2类的声明和对象的定义每一个限制词(private等)在类体中可使用多次。一旦使用了限制词,该限制词一直有效,直到下一个限制词开始为止。如果未加说明,类中成员默认的访问权限是private,即私有的。第十二页,共三十二页,2022年,8月28日2.2类的声明和对象的定义classA{floatx,y;
public:voidSetxy(floata,floatb){x=a;y=b;}voidPrint(void){cout<<x<<‘\t’<<y<<endl;}};
在类外不能直接使用x或y,必须通过Setxy()给x或y赋值,通过Print()输出x或y。xySetxy()Print()A私有数据公有函数第十三页,共三十二页,2022年,8月28日2.2类的声明和对象的定义在定义一个类时,要注意如下几点:1、类具有封装性,并且类只是定义了一种结构(样板),所以类中的任何成员数据均不能使用关键字extern,register限定其存储类型。2、在定义类时,只是定义了一种导出的数据类型,并不为类分配存储空间,所以,在定义类中的数据成员时,不能对其初始化。如:classTest
{
intx=5,y=6;//是不允许的
externfloatx; //是不允许的
}第十四页,共三十二页,2022年,8月28日2.2类的声明和对象的定义对象只有在定义了属于类的变量后,系统才会为类的变量分配空间。对象是类的实例,定义对象之前,一定要先说明该对象的类。类的变量我们称之为对象。第十五页,共三十二页,2022年,8月28日2.2类的声明和对象的定义不同对象占据内存中的不同区域,它们所保存的数据各不相同,但对成员数据进行操作的成员函数的程序代码均是一样的。对象的定义格式:类名对象名1,对象名2,…;
class类名对象名1,对象名2,…;例Studentst1,st2;类名对象名在建立对象时,只为对象分配用于保存数据成员的内存空间,而成员函数的代码为该类的每一个对象所共享。第十六页,共三十二页,2022年,8月28日2.2类的声明和对象的定义对象的定义方法同结构体定义变量的方法一样,也分三种,当类中有数据成员的访问权限为私有时,不允许对对象进行初始化。classA{floatx,y;public:voidSetxy(floata,floatb){x=a;y=b;}voidPrint(void){cout<<x<<‘\t’<<y<<endl;}}a1,a2;voidmain(void){Aa3,a4;}定义全局对象定义局部对象第十七页,共三十二页,2022年,8月28日2.2类的声明和对象的定义对象的使用一个对象的成员就是该对象的类所定义的成员,有成员数据和成员函数,引用时同结构体变量类似,用“.”运算符。第十八页,共三十二页,2022年,8月28日2.2类的声明和对象的定义classA{floatx,y;public:floatm,n;voidSetxy(floata,floatb){x=a;y=b;}voidPrint(void){cout<<x<<‘\t’<<y<<endl;}};voidmain(void){Aa1,a2;//定义对象
a1.m=10;a1.n=20;//为公有成员数据赋值
a1.Setxy(2.0,5.0);//为私有成员数据赋值
a1.Print();}输出:2 5第十九页,共三十二页,2022年,8月28日2.2类的声明和对象的定义classA{floatx,y;public:floatm,n;voidSetxy(floata,floatb){x=a;y=b;}voidPrint(void){cout<<x<<‘\t’<<y<<endl;}};voidmain(void){Aa1,a2;a1.m=10;a1.n=20; //为公有成员数据赋值
a1.x=2;a1.y=5;a1.Setxy(2.0,5.0);a1.Print();}必须通过类内公有函数访问私有数据成员非法,私有成员不能在类外访问第二十页,共三十二页,2022年,8月28日2.3类的成员函数成员函数的性质:与普通函数相同:返回值和函数类型;不同:属于一个类的成员,出现在类体中。注意成员函数的权限(它能否被调用)、作用域(函数能使用什么范围中的数据和函数)。声明为private的私有成员函数不能被类外界调用,为本类中其他成员函数提供服务,是其他函数的工具函数。第二十一页,共三十二页,2022年,8月28日2.3类的成员函数在类外定义成员函数:1.成员函数可以在类体中只声明,在类体外进行函数定义。2.类体外定义函数时,函数名前加上类名和“::”(作用域限定符或作用域运算符)。3.好处:减少类体的长度,使类体清晰,便于阅读;把类的接口和实现细节相分离。第二十二页,共三十二页,2022年,8月28日2.3类的成员函数classStudent{ public: voiddisplay();//成员函数声明 private: intnum; stringname; charsex;};voidStudent::display()//类体外成员函数定义{cout<<“num:”<<num<<endl; cout<<“name:”<<name<<endl; cout<<“sex:”<<sex<<endl;}Studentstud1,stud2;类名域运算符第二十三页,共三十二页,2022年,8月28日2.3类的成员函数classA{floatx,y;public:
voidSetxy(floata,floatb){x=a;y=b;}voidPrint(void){cout<<x<<‘\t’<<y<<endl;}}; 在类体内定义成员函数成员函数与成员数据的定义不分先后,可以先说明函数原型,再在类体外定义函数体。第二十四页,共三十二页,2022年,8月28日2.3类的成员函数classA{floatx,y;public:
voidSetxy(floata,floatb);
voidPrint(void);};
voidA::Setxy(floata,floatb){x=a;y=b;}voidA::Print(void){cout<<x<<‘\t’<<y<<endl;}在类体内说明成员函数原型在类体外定义成员函数第二十五页,共三十二页,2022年,8月28日2.3类的成员函数在类体外定义成员函数的格式:<type><class_name>::<func_name>(<参数表>){......//函数体}voidA::Setxy(floata,floatb){x=a;y=b;}函数类型类名函数名形参列表函数体第二十六页,共三十二页,2022年,8月28日2.3类的成员函数内联成员函数当我们定义一个类时,可以在类中直接定义函数体。这时成员函数在编译时是作为内联函数来实现的。同时,我们也可以在类体外定义类的内联成员函数,在类体内说明函数,在类体外定义时,在成员函数的定义前面加上关键字inline。第二十七页,共三十二页,2022年,8月28日2.3类的成员函数classA{floatx,y;public:voidSetxy(floata,floatb);
voidPrint(void);};
inlinevoidA::Setxy(floata,floatb){x=a;y=b;}inlinevoidA::Print(void){cout<<x<<‘\t’<<y<<endl;}说明该成员函数为内联第二十八页,共三十二页,2022年,8月28日2.4对象成员的引用类的对象如何引用私有数据成员1、通过公有函数为私有成员赋值classTt{es intx,y;public:voidSetxy(inta,intb){x=a; y=b;}voidPrintxy(void){cout<<"x="<<x<<'\t'<<"y="<<y<<endl;}};voidmain(void){ Testp1,p2; p1.Setxy(3,5); p1.Printxy();}调用公有函数为私有对象赋值第二十九页,共三十二页,2022年,8月28日2.4对象成员的引用classTest{
intx,y;public:voidSetxy(inta,intb){x=a; y=b;}voidGetxy(int*px,int*py){*px=x;*py=y;}//提取x,y值
voidPrintxy(void){cout<<"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第一单元 习作【知识精研】家乡的风俗【知识精研】【知识精研】六年级语文下册单元作文能力提升(统编版)
- 第三单元第1课时 分数乘法(一)【知识精研】 五年级数学下册同步高效课堂 北师大版
- 皮肤科病症护理课件
- 行政公文写作培训机关文书写作讲座课件
- 《走近世界民间美术》 课件 2024-2025学年人美版(2024)初中美术七年级下册
- 《财务报告赵》课件
- 《疫情下的美和丑》课件
- 《创意改善生活》课件 2024-2025学年 湘美版(2024)初中美术七年级上册
- 《金相分析试验培训》课件
- 商务法务考试复习试题附答案
- 九年级中考前动员家长会课件
- 传感器技术-武汉大学
- 陕西省榆林市2023-2024学年高二上学期1月期末语文试题 (解析版)
- 无光纤传输技术Er:YAG激光口腔临床应用规范
- 2024新版有限空间作业安全大培训
- 汽车电器线束DFMEA范例
- 2024西门子风电数字化
- DB63-T 2269-2024 公路建设项目安全生产费用清单计量规范
- 2024年社区工作者考试题库及答案
- 古诗词诵读《拟行路难(其四) 》(教学课件)-统编版高中语文选择性必修下册
- (正式版)JBT 14449-2024 起重机械焊接工艺评定
评论
0/150
提交评论