




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章(1) 类与对象,C+语言程序设计,2,主要内容与学习要求,重点: 1、掌握类的声明方法与类的成员函数的实现 2、理解并正确定义类成员的访问权限 3、掌握类的应用:对象的声明及使用,类的定义举例,声明时钟类Clock,包含时间的Hour、Minute, Second ,以及设定时间SetTime()和显示时间ShowTime()。,3,设计类的步骤:,1、问题分析:确定数据成员和成员函数 2、类的声明:建立在头文件中。 3、实现成员函数:建立在与头文件同名的.cpp文件中。 4、类和对象的使用:在main函数所在的.cpp文件中。,5,类的定义,类的定义包括类的声明和成员函数的实现 。 class 类名称 public: 公有成员(外部接口) protected: 保护型成员 private: 私有成员 ;,6,/类的定义实例(clock.h): class Clock public: void SetTime(int NewH,int NewM, int NewS); void ShowTime( ); private: int Hour, Minute, Second; ;,数据成员,函数成员,7,类成员函数的实现,成员函数的2种实现方式: 在类内实现 和 在类外实现 。 方法一: 常用类外 一般将成员函数的实现放在类的外面,函数名前用类名限定。如 void Clock:ShowTime() ,8,类外实现的成员函数的格式 【常用】 返回值类型 类名:成员函数名(参数表) 函数体 ,类的成员函数的实现,/实例(clock.cpp):钟表类的成员函数的实现 void Clock:SetTime(int NewH, int NewM,int NewS) Hour=NewH; Minute=NewM; Second=NewS; void Clock:ShowTime() /显示时间 coutHour“:“Minute“:“Secondendl; ,9,/提示:一般将成员函数的实现放在类的外面,函数名前用类名限定;并且单独存放在扩展名为.cpp的文件中,主文件名与类的声明文件同。,10,对象的定义与使用,定义类的目的是为了应用该类定义对象。 类的对象是该类的某一特定实体,即“类” 类型的变量。 1、对象的声明: 类名 对象名表; 例: Clock myClock; CPoint p1,p2;,11,2、对象成员的一般访问方式,方法一:在类的外部只能直接对象访问公有成员,采用成员运算符“.”实现,格式: 对象名.成员名 比如, 设类Clock已经定义。 void main() Clock myClock; myClock.SetTime(8,30,30); myClock.ShowTime(); 方法二:在类的内部,可直接访问数据成员,格式: 直接使用成员名 void Clock:SetTime( ) Hour = Minute= Second=0;,在VC+6定义和使用类的过程,1、建立vc+工程:win32 console application; 2、在工程中新建.h文件,写入类的声明; 3、在工程中新建与.h文件同名的.cpp文件,写入成员函数的实现; 4、在工程中新建.cpp文件,编写main函数,使用类和对象,进行程序测试; 5、运行和调试程序,声明点类 CPoint , 包含: 坐标X和Y,设置点的坐标Init()和获取点的横坐标和纵坐标GetX()和GetY()三个函数。,14,CPoint类的实现,class CPoint public: void Init(int X0,int Y0); int GetX(); int GetY(); private: int X,Y; ;,void CPoint:Init(int X0,int Y0) X=X0; Y=Y0; int CPoint:GetX() return X; int CPoint:GetY() return Y; ,15,CPoint的使用,void main() CPoint p1; p1.Init(10,20); /设置p1点 cout(p1.GetX()”,” p1.GetY()endl; /输出点坐标 ,17,实例:对象的定义与使用,题目要求:定义一个复数类型,包含实部和虚部,能对该类型的对象赋初值、求实部、求虚部、求复数的绝对值。 问题分析: (1)数据成员和函数成员 (2)确定成员的访问属性: 将数据成员声明为私有的,可以阻止外界对他们的随意访问,只有该类中的成员函数才能访问。 将成员函数声明为公有的,他们便是外界访问类中数据的接口。,18,/类的声明 complex.h #include using namespace std; class CComplex public: /成员函数 void init(double r, double i) /赋初值 double realcomplex( ) /求实部 double imagcomplex( ) /求虚部 double abscomplex( ) /求复数的绝对值 private: /数据成员 double m_real; double m_imag; ;,19,/类的成员函数的实现complex.cpp void CComplex :init(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.init(1.5 , 9.7); /初始化对象A cout“real of complex A =“ A.realcomplex( ) endl; cout“imag of complex A =“ A.imagcomplex( ) endl; cout“abs of complex A =“ A.abscomplex( ) endl; ,运行结果: real of complex A =1.5 imag of complex A =9.7 abs of complex A =9.81529,21,3、通过指向对象的指针访问对象成员对象指针,与结构体类似,通过指向对象的指针和“-”成员运算符可访问对象的成员。比如: void main() CPoint p1,*p2; p1.Init(10,20); /设置p1点 p2= /输出点坐标 ,22,4、this指针,指向当前对象的指针,当需要在类的成员函数中取得当前对象时使用。 比如,在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; coutp2.GetX(),p2.GetY( ) endl; ,23,问题:定义类时,如何确定公有成员和私有成员?,方法: 根据实际需要而定。 数据成员一般定义为私有的(为了实现数据隐藏) 供外界访问的接口函数应定义为公有的,一个只供类中的成员函数调用的成员函数应当定义为私有的。 例如:有一个学生成绩类,其属性有学号、姓名、5门课的成绩、平均成绩;其成员函数有输入一个学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轴承套圈采购合同协议
- 运输公司借车合同协议
- 专业音响设备销售与售后维修服务协议
- 进口巧克力购货合同协议
- 培训机构职工大会
- 建筑工程补充协议付款方式
- 企业并购后权益共享协议
- 广告行业居间合同
- 消防安全培训实施指南
- 法院免还协议书
- 农村宅基地使用权和房屋所有权权属确认申请审核表
- 第15课+十月革命的胜利与苏联的社会主义实践【高效备课精研 + 知识精讲提升】 高一历史 课件(中外历史纲要下)
- 大学写作课课件-Chapter3-Effective-Sentences
- 灭火器维修与报废规程
- (4.3.1)-3.3我国储粮生态区的分布
- GB/T 19929-2005土方机械履带式机器制动系统的性能要求和试验方法
- 企业公司早会晨会年会团建小游戏“看图猜电影电视名”互动游戏
- 110~750kV架空输电线路设计规范方案
- 车辆采购、维修服务投标方案
- 药剂科病房麻醉药品精神药品处方流程
- 智慧楼宇设计方案.pdf
评论
0/150
提交评论