类和对象 (2)优秀PPT.ppt
类和对象类和对象第一页,本课件共有32页2本章主要内容本章主要内容l面向过程与面向对象的思想面向过程与面向对象的思想l类的声明类的声明l类的成员类的成员l类的成员访问权限类的成员访问权限l对象对象2第二页,本课件共有32页本章目标本章目标l了解面向对象思想了解面向对象思想l掌握类的声明方式掌握类的声明方式l理解类的成员组成理解类的成员组成l理解类的成员访问权限理解类的成员访问权限l掌握类的成员函数的定义格式掌握类的成员函数的定义格式l掌握访问对象中成员的方法掌握访问对象中成员的方法33第三页,本课件共有32页4本章主要内容本章主要内容l面向过程与面向对象的思想面向过程与面向对象的思想l类的声明类的声明l类的成员类的成员l类的成员访问权限类的成员访问权限l对象对象第四页,本课件共有32页5回顾:面向过程的设计方法回顾:面向过程的设计方法5第五页,本课件共有32页6面向对象的方法面向对象的方法6第六页,本课件共有32页常见的英文缩写(了解)常见的英文缩写(了解)lOO:面向对象面向对象lOOP:面向对象程序设计面向对象程序设计lOOA:面向对象分析面向对象分析lOOT:面向对象测试面向对象测试l详情参看详情参看237页页77第七页,本课件共有32页面向对象的几个基本概念面向对象的几个基本概念l类类l对象对象l抽象抽象l封装封装l继承继承l多态性多态性8OO的三大基本特征的三大基本特征第八页,本课件共有32页9本章主要内容本章主要内容l面向过程与面向对象的思想面向过程与面向对象的思想l类的声明类的声明l类的成员类的成员l类的成员访问权限类的成员访问权限l对象对象第九页,本课件共有32页结构体结构体struct Student string name;int age;1010第十页,本课件共有32页类:类:lclass Studentll string name;l int age;l;11第十一页,本课件共有32页12类的声明形式类的声明形式类是一种自定义数据类型,声明形式:类是一种自定义数据类型,声明形式:class 类名称类名称 private:私有成员私有成员 public:公有成员公有成员;第十二页,本课件共有32页13抽象实例抽象实例学生类学生类l数据抽象:数据抽象:string name;int age;l代码抽象:代码抽象:Set(),display()13第十三页,本课件共有32页14抽象实例抽象实例学生类学生类class Student public:string name;/数据成员数据成员 int age;void Set()/成员函数成员函数 略略 void display()略略;/注意最后的注意最后的“;”号号14第十四页,本课件共有32页15本章主要内容本章主要内容l面向过程与面向对象的思想面向过程与面向对象的思想l类的声明类的声明l类的成员类的成员l类的成员访问权限类的成员访问权限l对象对象15第十五页,本课件共有32页16c+中的类中的类l类是具有相同属性和行为的一组对象类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括供了统一的抽象描述,其内部包括属属性性和和行为行为两个主要部分。两个主要部分。l利用类易于编写大型复杂程序,其模利用类易于编写大型复杂程序,其模块化程度比块化程度比C中采用函数更高。中采用函数更高。16第十六页,本课件共有32页17类的成员类的成员class Student public:string name;/数据成员数据成员 int age;void Set()/成员函数成员函数 略略 void display()略略;/注意最后的注意最后的“;”号号17第十七页,本课件共有32页18数据成员数据成员l与一般的变量声明相同,但需要将它与一般的变量声明相同,但需要将它放在放在类类的声明体中。的声明体中。18第十八页,本课件共有32页19成员函数成员函数l在类中说明原形,可以在类外给出函数在类中说明原形,可以在类外给出函数体实现,并在函数名前使用类名加以限体实现,并在函数名前使用类名加以限定。也可以直接在类中给出函数体,形定。也可以直接在类中给出函数体,形成内联成员函数。成内联成员函数。l允许声明重载函数和带默认形参值的函允许声明重载函数和带默认形参值的函数数19第十九页,本课件共有32页20内联成员函数内联成员函数l为了提高运行时的效率,对于较简单为了提高运行时的效率,对于较简单的函数可以声明为内联形式。的函数可以声明为内联形式。l内联函数体中不要有复杂结构(如循内联函数体中不要有复杂结构(如循环语句和环语句和switch语句)。语句)。l在类中声明内联成员函数的方式:在类中声明内联成员函数的方式:将函数体放在类的声明中。将函数体放在类的声明中。使用使用inline关键字声明成员函数。关键字声明成员函数。20第二十页,本课件共有32页21内联成员函数举例内联成员函数举例(一一)class Point public:void Init(int initX,int initY)X=initX;Y=initY;int GetX()return X;int GetY()return Y;private:int X,Y;21第二十一页,本课件共有32页22内联成员函数举例内联成员函数举例(二二)class Pointprivate:int X,Y;public:inline void Init(int initX,int initY);inline int GetX();inline int GetY();;22第二十二页,本课件共有32页inline void Point:Init(int initX,int initY)X=initX;Y=initY;inline int Point:GetX()return X;inline int Point:GetY()return Y;/注:注:声明里面有了声明里面有了inline关键字,定义函数时可以关键字,定义函数时可以 省略掉省略掉inline关键字关键字2523第二十三页,本课件共有32页24本章主要内容本章主要内容l面向过程与面向对象的思想面向过程与面向对象的思想l类的声明类的声明l类的成员类的成员l类的成员访问权限类的成员访问权限l对象对象24第二十四页,本课件共有32页25公有类型成员公有类型成员(public)在关键字在关键字public后面声明,它们是类后面声明,它们是类与外部的接口,任何外部函数都可以访与外部的接口,任何外部函数都可以访问公有类型数据和函数。问公有类型数据和函数。25第二十五页,本课件共有32页26私有类型成员私有类型成员(private)在关键字在关键字private后面声明,只允许后面声明,只允许本本类类中的函数访问,而类外部的任何函中的函数访问,而类外部的任何函数都不能访问。数都不能访问。如果紧跟在类名称的后面声明私有成员,则关如果紧跟在类名称的后面声明私有成员,则关键字键字privateprivate可以省略。可以省略。26第二十六页,本课件共有32页27保护类型保护类型(protected)与与private类似,其差别表现在继承与类似,其差别表现在继承与派生时对派生类的影响不同,第十一章派生时对派生类的影响不同,第十一章讲。讲。27第二十七页,本课件共有32页28本章主要内容本章主要内容l面向过程与面向对象的思想面向过程与面向对象的思想l类的声明类的声明l类的成员类的成员l类的成员访问权限类的成员访问权限l对象对象28第二十八页,本课件共有32页29对象对象l类的对象是该类的某一特定实体,即类的对象是该类的某一特定实体,即类类型的变量。类类型的变量。l声明形式:声明形式:类名类名 对象名;对象名;l例:例:Student stu1;/常用方法常用方法29第二十九页,本课件共有32页定义对象的方法定义对象的方法第一种:先声明类类型,再定义对象第一种:先声明类类型,再定义对象lclass Student stu1;lStudent stu1;30等效30第三十页,本课件共有32页定义对象的方法定义对象的方法l第二种:声明类类型的同时定义对象第二种:声明类类型的同时定义对象 class student private:string name;int age;stu1,stu2;31第三十一页,本课件共有32页访问对象中成员的访问对象中成员的3种方法:种方法:l1、通过对象名和成员运算符访问对象中成员、通过对象名和成员运算符访问对象中成员l 对象名对象名.成员名成员名l 例:例:stu1.name;stu1.set();l2、通过指向对象的指针访问对象中成员、通过指向对象的指针访问对象中成员l 例:例:Student stu1,*p;l p=&stu1;l cout name endl;l3、通过对象的引用变量访问对象中的成员、通过对象的引用变量访问对象中的成员l 例:例:Student stu1;l Student&stu2=stu1;l (stu1,stu2共占同一段存储单元共占同一段存储单元)。3232第三十二页,本课件共有32页