




免费预览已结束,剩余58页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
应知学问难,在乎点滴勤,陈毅,如果不想在世界上虚度一生,那就要学习一辈子,高尔基,课件作者:刘葳,第8章类和对象的特性,2,词汇,对象属性行为封装信息隐藏重用,3,继承多态性私有公有保护产生,目的权限属于具有拥有描述,0.从结构到类,1.结构的基本概念当一些复杂的数据用基本数据类型无法描述时,可以考虑自己定义数据类型。如:描述学生信息可以用结构类型的数据来描述结构类型是将不同类型的数据组合成一个整体,这些不同类型的数据是相互联系的,是对该整体的不同侧面的描述,4,0.从结构到类,如:学生信息的描述,5,structstudentchar*name;intstu_no;floatscore3;s1,s2;,只包含数据信息,不包含对数据的操作,0.从结构到类,structstudentchar*name;intstu_no;floatscore3;voidmain()structstudents1,s2;strcpy(,”Majing”);s1.stu_no=99012;s1.score0=79;s1.score1=80;s1.score2=90;.,6,结构中定义的数据成员,对结构中数据成员的操作,0.从结构到类,结论:用struct定义的结构类型只有数据,没有相关操作,操作需要在应用程序中单独编写,增加了程序员的负担。类似问题的程序代码无法与其它程序员共享。基于以上特点,提出基于对象的程序设计思想,进而引入了类的概念。,7,1.面向对象程序设计方法概述,(1)什么是面向对象的程序设计基本概念:对象客观世界中任何一个事物都可以看成一个对象,每一个对象都有两个要素:静态特征和动态特征。例如:班级可以看作一个对象,按钮也可看作一个对象。,8,1.面向对象程序设计方法概述,班级对象班级的静态特征:所属系和专业、班级人数,所在的教室等等。这种静态特征称为属性;班级的动态特征:如学习、开会、体育比赛等等,这种动态特征称为行为。,按钮对象:按钮的静态特征:按钮的动态特征:,9,外形、大小,按钮的字体、图案等等,针对按钮的各种操作。如:单击、双击等等,1.面向对象程序设计方法概述,任何一个对象都应当具有这两个要素,一是属性(attribute);二是行为(behavior),即能根据外界给的信息进行相应的操作。所以对象是由一组属性和一组行为构成的。在C+中,每个对象都是由数据和函数(即操作代码)这两部分组成的。,10,1.面向对象程序设计方法概述,封装和信息隐藏封装有两个含义:一是将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相对独立,互不干扰。二是将对象中某些部分对外隐藏,即隐藏其内部细节,只留下少量接口,以便与外界联系,接收外界消息。这种对外界隐藏的做法称为信息隐藏。,11,1.面向对象程序设计方法概述,抽象例如:“人”就是一种抽象。世界上只有具体的人,如张三、李四等等,将所有国籍为中国的人归纳为一类,称为中国人,这就是一种抽象,再将所有国家的人抽象为“人”。在实际生活中,你只能看到具体的人,而看不到抽象的人。抽象的作用是表示同一类事物的本质,12,1.面向对象程序设计方法概述,类是抽象的,对象是具体存在的。例如:一个三角形可以作为一个对象,10个不同尺寸的三角形就是10个三角形对象,由于他们具有相同的属性和行为,所以可将他们抽象为一种类型,称为三角形类型。在C+中,这种类型称为“类”,10个三角形就是属于同一“类”的对象。所以,类是对象的抽象,而对象则是类的特例,即类的具体表现形式。,13,1.面向对象程序设计方法概述,#includeusingnamespacestd;classStudentpublic:intxuehao;charname100;charclass_str100;voidinput_data()cinxuehaonameclass_str;voidoutput_data()coutxuehao:xuehaoendl;coutname:nameendl;coutclass:class_strendl;,intmain()Studentzhangsan;zhangsan.input_data();zhangsan.output_data();return0;,为Student类,是抽象的,zhangsan是具体的对象,1.面向对象程序设计方法概述,继承和重用例如:如果已经建立了一个名为A的“类”,又想建立一个名为B的“类”,后者与前者内容基本相同,只是在前者的基础上增加一些属性和行为,显然不必重头设计一个新类,只需在类A的基础上增加一些新的内容即可,这就是面向对象程序设计的继承机制。,15,1.面向对象程序设计方法概述,例如:“白马”继承了“马”的基本特征,又增添了新的特征(颜色),“马”是父亲,或称基类,“白马”是从“马”派生出来的,称为子类或派生类。采用C+提供的继承机制,可以很方便地使用一个已有的类建立一个新的类,这就可以重用已有软件中的一部分甚至大部分,大大节省编程工作量,这就是常说的“软件重用”。,16,1.面向对象程序设计方法概述,多态性在C+中,多态性是指:由继承而产生的不同的派生类,其对象对同一消息会作出不同的响应。多态性是面向对象程序设计的一个重要特征,能增加程序的灵活性。,17,1.面向对象程序设计方法概述,(2)面向对象程序设计的特点主要从两方面考虑:一是设计所需的各种类和对象,即决定把哪些数据和操作封装在一起;二是考虑怎样向有关对象发送消息,以完成所需的任务。当各个对象的操作完成了,整体任务也就完成了。,18,1.面向对象程序设计方法概述,因此人们设想把相关的数据和操作放在一起,形成一个整体,与外界相对分隔。这就是面向对象的程序设计中的类。C+面向对象的程序设计结构:一般由类的声明及定义和类的使用两部分组成。类的使用部分一般由main函数和有关子函数组成。以下是C+的基本结构。,19,1.面向对象程序设计方法概述,include/类的定义部分classCintx,y,z;/类C的数据成员声明f()./类C的成员函数的声明和定义;/类的使用部分voidmain()Ca;/建立一个类C的对象aa.f();/给对象a发消息,调用成员函数f(),20,结论:类中封装了数据和对数据的操作,用户只有通过对象才能访问类中的数据成员和成员函数。提高了数据的安全性。,2.类的声明和对象定义,(1)类和对象的关系每一个实体都是对象。每个对象都属于一个特定的类型。在C+中对象的类型称为类(class)。类代表了某一批对象的共性和特征。类是对象的抽象,而对象是类的具体实例(instance)。,21,2.类的声明和对象定义,(2)声明类类型类类型的声明是由结构类型的声明演变而来StructStudent/声明一个名为Student的结构类型intnum;charname20;charsex;Students1,s2;/定义2个结构体变量s1和s2,22,只包含数据信息,不包含对数据的操作,2.类的声明和对象定义,classStudent/声明一个名为Student的类intnum;charname20;charsex;voiddisplay()/以上3行是数据成员cout“num:”numendl;cout“name:”nameendl;cout“sex:”sexendl;/以上3行是函数中的操作语句;Students1,s2;/定义2个Student类的对象s1和s2,23,类中的数据和函数不能在类外访问(即直接调用或使用),2.类的声明和对象定义,classStudent/声明一个名为Student的类private:intnum;charname20;charsex;public:voiddisplay()/以上3行是数据成员cout“num:”numendl;cout“name:”nameendl;cout“sex:”sexendl;/以上3行是函数中的操作语句;Students1,s2;/定义2个Student类的对象s1和s2,24,类中的数据一般是隐藏的,成员函数display()作为对外界的接口,2.类的声明和对象定义,归纳得出声明”类”类型的一般形式:classprivate:数据成员和成员函数的定义protected:数据成员和成员函数的定义public:数据成员定义和成员函数的定义;,25,此为类头class是关键字,此为类体。类体用来定义类的成员,它包括两种:数据成员和成员函数,不能丢,私有,保护,公有,2.类的声明和对象定义,26,注意:访问权限三种访问权限:私有(private)、公有(public)和保护(protected)定义为private的私有数据成员或私有成员函数,限定在该类的内部使用,即只允许该类中的成员函数使用,对于私有的成员函数,只能被该类内的成员函数调用;,2.类的声明和对象定义,27,定义为public的公有数据成员或成员函数不受类的限制,可以在类内或类外自由使用;对类而言是透明的;定义为protected的数据成员或成员函数,只允许在类内及该类的派生类中使用,其作用域是该类及该类的派生类。如果未加说明,类中成员默认的访问权限是private,即私有的。,2.类的声明和对象定义,28,练习1:按下列要求编写一个类A,该类中包括:(1)三个私有数据成员:字符型数据成员n1,字符成员n2,整型成员n3;(2)两个公有成员函数:实现输入的函数input(),其功能是为A类的三个私有成员赋初值,即:n1a,n2=b,n3=0;输出函数成员show(),用来实现输出三个私有数据成员的值,请写出这个类。,2.类的声明和对象定义,29,练习2:编写一个Dsum类,该类中包括:(1)2个私有数据成员:x,y;(2)3个公有成员函数:实现给x和y赋值的函数input();实现求和的函数sum(),输出结果的函数output(),请写出这个类。,2.类的声明和对象定义,30,#includeclassBaseintm;public:f1()coutA;f2(charc)coutnum;cinname;cinsex;voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexendl;,voidmain()Students1;s1.input();s1.display();,3.类的成员函数,(1)成员函数的性质类的成员函数与之前介绍的函数基本一样,也具有函数类型和返回值,它与一般函数的区别是:成员函数属于一个类中的成员,是类体中的组成部分。成员函数可以定义在类体中,也可以定义在类体外。,34,3.类的成员函数,使用函数时要注意:私有的成员函数只能被本类中的其他成员函数调用,不能被类外的函数调用,成员函数可以访问本类中的任何成员(包括公有和私有)一般做法:将需要被外界调用的成员函数指定为public,它是类的对外接口。但要注意不是要将所有的成员函数指定为public。,35,3.类的成员函数,(2)成员函数的定义在类内定义成员函数classStudentprivate:intnum;charname20;charsex;public:voiddisplay()cout“num:”numendl;cout“name:”nameendl;cout“sex:”sexendl;;,36,成员函数,在类内定义,3.类的成员函数,在类外定义成员函数classStudentprivate:intnum;charname20;charsex;public:voiddisplay();voidStudent:display()cout“num:”numendl;cout“name:”nameendl;cout“sex:”sexendl;,37,成员函数,在类外定义,:作用域限定符,3.类的成员函数,(3)内置成员函数(内联成员函数)C+要求对一般的内联函数要用关键字inline说明,但对类内定义的成员函数可以省略inline,因为这些成员函数已被隐含指定为内联函数。注意:在类外定义的成员函数不被默认为内联成员函数,如果要将类外定义的成员函数定义为内联函数,要用关键字inline说明。,38,3.类的成员函数,classStudentprivate:intnum;charname20;charsex;public:voiddisplay()cout“num:”numendl;cout“name:”nameendl;cout“sex:”sexendl;;,39,默认为内联函数,3.类的成员函数,classStudentprivate:intnum;charname20;charsex;public:voiddisplay();inlinevoidStudent:display()cout“num:”numendl;cout“name:”nameendl;cout“sex:”sexnum;cinname;cinsex;voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexendl;,voidmain()Students1,s2;cout“请输入第1个学生信息:”;s1.input();cout“请输入第2个学生信息:”;s2.input();s1.display();s2.display();,4.对象成员的引用,访问对象中的成员有3种方法:通过对象名和成员运算符访问对象中的成员通过指向对象的指针访问对象中的成员通过对象的引用访问对象中的成员,44,4.对象成员的引用,(1)通过对象名和成员运算符访问对象中的成员voidmain()Studentstud1;stud1.num=1001;=zhangsan;stud1.sex=f;stud1.display();,45,#include#includeusingnamespacestd;classStudentpublic:intnum;stringname;charsex;voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sext1.hour;cint1.minute;cint1.sec;coutt1.hour:t1.minute:t1.sect1.hour;cint1.minute;cint1.sec;coutt2.hour;cint2.minute;cint2.sec;coutt2.hour:t2.minute:t2.sechour;cinminute;cinsec;voidTime:show_time()couthour:minute:secy;voidswap()doublez;z=x;x=y;y=z;voidprint()coutx=xendl;couty=yendl;,voidmain()Swapt;t.input();t.swap();t.print();,5.类和对象的简单应用举例,53,例5:使用类的方法实现求:1+2+3+100的值,5.类和对象的简单应用举例,54,例5:使用类的方法实现求:1+2+3+100的值,#includeiostreamusingnamespacestd;classSumprivate:ints;public:voidsum()s=0;for(inti=1;i=100;i+)s=s+i;voidprint()coutsum=sendl;,voidmain()Sumt;t.sum();t.print();,方法1,5.类和对象的简单应用举例,55,例5:使用类的方法实现求:1+2+3+100的值,#incl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《社团贷款管理办法》
- 语音包业务管理办法
- 西宁机动车管理办法
- 仓储物流物资管理办法
- 心脏康复生活质量影响-洞察及研究
- 红薯储藏期管理办法
- 产品改进计划管理办法
- 产品对外报价管理办法
- 营口特殊资产管理办法
- 装修工程绿色管理办法
- 绿电制氢氨项目实施计划与进度安排
- 2025年中国造影剂行业市场发展监测及投资战略规划研究报告
- 2025年湖南省高职单招《语文》高频必练考试题库400题(含答案)
- 八年级地理实验室使用计划
- 公司信息安全知识培训模版课件
- 医院医用耗材SPD服务项目投标方案
- 债务重组合同协议书样本
- 《妇产科学》课件-9.2产力异常
- 《新能源汽车》课件 课题四 纯电动汽车
- 金融领域反腐
- 应急物业合同范本(2篇)
评论
0/150
提交评论