《《类和对象举例》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《类和对象举例》PPT课件.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2章(章(1)类与对象类与对象C+语言程序设计2主要内容与学习要求主要内容与学习要求重点:重点:l1、掌握类的声明方法与类的成员函、掌握类的声明方法与类的成员函数的实现数的实现l2、理解并正确定义类成员的访问权、理解并正确定义类成员的访问权限限l3、掌握类的应用:对象的声明及使、掌握类的应用:对象的声明及使用用类的定义举例类的定义举例l声明时钟类声明时钟类ClockClock,包含时间的HourHour、MinuteMinute,SecondSecond,以及设定时间SetTimeSetTime()()和显示时间ShowTime()ShowTime()。3设计类的步骤:设计类的步骤:l1、
2、问题分析:确定数据成员和成员函、问题分析:确定数据成员和成员函数数l2、类的声明:建立在头文件中。、类的声明:建立在头文件中。l3、实现成员函数:建立在与头文件同、实现成员函数:建立在与头文件同名的名的.cpp文件中。文件中。l4、类和对象的使用:在、类和对象的使用:在main函数所函数所在的在的.cpp文件中。文件中。5类的定义类的定义l类的定义包括类的定义包括类的声明类的声明和和成员函数的实现成员函数的实现。class class 类名称类名称 public:public:公有成员公有成员(外部接口)(外部接口)protected:protected:保护型成员保护型成员 private:
3、private:私有成员私有成员;6/类的定义实例(clock.h):class Clockclass Clock public:public:void void SetTimeSetTime(int NewH,int NewM,(int NewH,int NewM,int NewS);int NewS);void void ShowTimeShowTime();();private:private:int int HourHour,MinuteMinute,SecondSecond;数据成员函数成员7类成员函数的实现类成员函数的实现l成员函数的成员函数的2种实现方式:种实现方式:在类内实现在
4、类内实现 和和 在类外实现在类外实现。方法一方法一:常用常用类外类外l一般将成员函数的实现放在类的外面,函数一般将成员函数的实现放在类的外面,函数名前用类名限定。如名前用类名限定。如 void void Clock:Clock:ShowTime()ShowTime()8l类外实现的成员函数的格式类外实现的成员函数的格式【常用常用】返回值类型返回值类型 类名类名:成员函数名(参数表)成员函数名(参数表)函数体函数体 类的成员函数的实现类的成员函数的实现/实例实例(clock.cpp):钟表类的成员函数的实现:钟表类的成员函数的实现void void Clock:Clock:SetTime(int
5、 NewH,int NewM,int NewS)SetTime(int NewH,int NewM,int NewS)Hour=NewH;Hour=NewH;Minute=NewM;Minute=NewM;Second=NewS;Second=NewS;void void Clock:Clock:ShowTime()/ShowTime()/显示时间显示时间 coutHour:Minute:Secondendl;coutHour:Minute:Secondendl;9/提示:一般将成员函数的实现放在类的外面,函数名前用提示:一般将成员函数的实现放在类的外面,函数名前用类名类名限定;并且单独存放在
6、扩展名为限定;并且单独存放在扩展名为.cpp.cpp的文件中,主文件名与类的的文件中,主文件名与类的声明文件同。声明文件同。10对象的定义与使用对象的定义与使用l定义类的目的是为了应用该类定义对象。定义类的目的是为了应用该类定义对象。l类的对象是该类的某一特定实体,即类的对象是该类的某一特定实体,即“类类”类型类型的变量。的变量。l1 1、对象的声明:、对象的声明:类名类名 对象名表;对象名表;l例:例:Clock myClock;Clock myClock;CPoint p1,p2;CPoint p1,p2;112、对象成员的一般访问方式、对象成员的一般访问方式l方法一:在类的外部只能直接对
7、象访问方法一:在类的外部只能直接对象访问公有成员公有成员,采用成员运算符,采用成员运算符“.”实现,格式实现,格式:对象名对象名.成员名成员名比如,比如,设类设类Clock已经定义。已经定义。void void main()main()Clock Clock myClockmyClock;myClock.SetTimemyClock.SetTime(8,30,30);(8,30,30);myClock.ShowTimemyClock.ShowTime();();l方法二:在类的内部,可直接访问数据成员,格式:方法二:在类的内部,可直接访问数据成员,格式:直接使用成员名直接使用成员名void C
8、lock:SetTime()Hour=Minute=Second=0;在在VC+6定义和使用类的过定义和使用类的过程程l1、建立、建立vc+工程:工程:win32 console application;l2、在工程中新建、在工程中新建.h文件,写入类的声明;文件,写入类的声明;l3、在工程中新建与、在工程中新建与.h文件同名的文件同名的.cpp文件,文件,写入成员函数的实现;写入成员函数的实现;l4、在工程中新建、在工程中新建.cpp文件,编写文件,编写main函函数,使用类和对象,进行程序测试;数,使用类和对象,进行程序测试;l5、运行和调试程序、运行和调试程序l声明点类声明点类 CPoi
9、nt,包含包含:坐标坐标X和和Y,设置点的坐标设置点的坐标Init()和获取点的横坐标和获取点的横坐标和纵坐标和纵坐标GetX()和和GetY()三个函数。三个函数。14CPointCPoint类的实现类的实现class CPointclass CPoint public:public:void Init(int X0,int Y0);void Init(int X0,int Y0);int GetX()int GetX();int GetY()int GetY();private:private:int X,Y;int X,Y;void CPoint:Init(int X0,int Y0)v
10、oid CPoint:Init(int X0,int Y0)X=X0;X=X0;Y=Y0;Y=Y0;int CPoint:GetX()int CPoint:GetX()return X;return X;int CPoint:GetY()int CPoint:GetY()return Y;return Y;15C CPoint的使用的使用 void void main()main()C CPoint p1;p1.Init(10,20);/设置设置p1点点 cout(p1.GetX()”,”p1.GetY()endl;/输出点坐标输出点坐标 17实实例例:对象的定义与使用:对象的定义与使用l题目
11、要求:定义一个复数类型,包含实部和虚部,题目要求:定义一个复数类型,包含实部和虚部,能对该类型的对象赋初值、求实部、求虚部、求能对该类型的对象赋初值、求实部、求虚部、求复数的绝对值。复数的绝对值。l问题分析:问题分析:(1 1)数据成员和函数成员)数据成员和函数成员 (2 2)确定成员的访问属性:)确定成员的访问属性:将数据成员声明为私有的,可以阻止外界对他们将数据成员声明为私有的,可以阻止外界对他们的随意访问,只有该类中的成员函数才能访问。的随意访问,只有该类中的成员函数才能访问。将成员函数声明为公有的,他们便是外界访问类将成员函数声明为公有的,他们便是外界访问类中数据的接口。中数据的接口。
12、18/类的声明类的声明 complex.h#include using namespace std;class CComplexpublic:/成员函数成员函数void init(double r,double i)/赋初值赋初值double realcomplex()/求实部求实部 double imagcomplex()/求虚部求虚部 double abscomplex()/求复数的绝对值求复数的绝对值 private:/数据成员数据成员double m_real;double m_imag;19/类的成员函数的实现类的成员函数的实现complex.cppvoid CComplex:ini
13、t(double r,double i)/赋初值赋初值 m_real=r;m_imag=i;double CComplex:realcomplex()/求实部求实部 return m_real;double CComplex:imagcomplex()/求虚部求虚部 return m_imag;double CComplex:abscomplex()/求复数的绝对值求复数的绝对值 double t;t=m_real*m_real+m_imag*m_imag;return sqrt(t);20/编写公共函数,调用复数类编写公共函数,调用复数类void main()CComplex A;A.ini
14、t(1.5,9.7);/初始化对象初始化对象A coutreal of complex A=A.realcomplex()endl;coutimag of complex A=A.imagcomplex()endl;coutabs of complex A=A.abscomplex()”成员运算符可访问对象的成员。比如:成员运算符可访问对象的成员。比如:void main()C CPoint p1,*p2;p1.Init(10,20);/设置设置p1点点 p2=&p1;/使使p2指向指向p1 cout(GetX()”,”GetY()endl;/输出点坐标输出点坐标224、this指针指针l 指
15、向当前对象的指针,当需要指向当前对象的指针,当需要在类的成员函数中取在类的成员函数中取得当前对象得当前对象时使用。时使用。l 比如,在比如,在CPoint类中增加一个成员函数,实现:类中增加一个成员函数,实现:将当前点的坐标各加将当前点的坐标各加1,返回原来的点。,返回原来的点。函数定义(类内):函数定义(类内):Point Add_1()Point old=*this;X+;Y+;return old;void main()/调用调用 Point p1,p2;p1.Init(10,20);/设置设置p1点点 p2=p1.Add_1();coutp1.GetX(),p1.GetY()endl;
16、coutp2.GetX(),p2.GetY()endl;23问题:定义类时,如何确问题:定义类时,如何确定公有成员和私有成员?定公有成员和私有成员?方法:方法:l根据实际需要而定。根据实际需要而定。l数据成员一般定义为私有的(为了实现数据隐藏)数据成员一般定义为私有的(为了实现数据隐藏)l供外界访问的接口函数应定义为公有的,一个只供外界访问的接口函数应定义为公有的,一个只供类中的成员函数调用的成员函数应当定义为私供类中的成员函数调用的成员函数应当定义为私有的。有的。例如例如:有一个学生成绩类,其有一个学生成绩类,其属性有学号、姓名、属性有学号、姓名、5 5门课的成绩、门课的成绩、平均成绩平均成
17、绩;其;其成员函数有输入一个学生的信息、显示一个学生的成员函数有输入一个学生的信息、显示一个学生的信息、计算平均成绩信息、计算平均成绩。其中,求平均的函数应定义为私有的,它。其中,求平均的函数应定义为私有的,它只被输入函数调用。其他两个函数定义为公有的,作为外界访问只被输入函数调用。其他两个函数定义为公有的,作为外界访问该对象的窗口。(练习该类的定义)该对象的窗口。(练习该类的定义)24课堂总结课堂总结l类的定义(类的声明与成员函数的实现)类的定义(类的声明与成员函数的实现)l类的应用(即对象的定义与成员的访问)类的应用(即对象的定义与成员的访问)l正确设置类成员的访问属性。正确设置类成员的访问属性。25类和对象应用作业:类和对象应用作业:lP76 3l企业员工类企业员工类【读例题读例题】