C++面向对象程序设计实验指导.docx
- 文档编号:27228921
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:59
- 大小:50.19KB
C++面向对象程序设计实验指导.docx
《C++面向对象程序设计实验指导.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计实验指导.docx(59页珍藏版)》请在冰豆网上搜索。
C++面向对象程序设计实验指导
C++面向对象程序设计
实验指导
C++语言面向对象程序设计是一门实践性很强的课程,学好这门课程离不开实验这一重要环节。
学生不仅应具有扎实的理论知识,还要通过坚持不懈地阅读程序、编程练习、程序调试、程序改错等环节的训练,才能真正掌握所学知识,提高编程水平。
对于初学者,可能会看程序但不会编写,程序调试时出现了问题不会纠错,这些都是正常现象,实际还是编程训练不够,只要勤学多练,最后一定可以取得令人满意的效果。
包括5个实验,每个实验都包括实验目的、实验内容、实验提示与实验步骤。
实验内容一般都包含有阅读程序与调试程序,程序改错,程序填空与编写程序方面的题目,这些题目也是C++面向对象程序设计考试要涉及的题型,因此做好实验对考试有极大的帮助;实验提示信息中有编程提示、重要内容提示或者出错信息提示;实验步骤以一个实际题目为例给出具体而实用的指导,让便让初学者不至于面对实验题目而束手无策,希望读者在实验中的能够学有所思,有所启迪。
实验1类和对象
1.1实验目的
1.掌握类的定义和使用方法,掌握类对象的声明和使用方法。
2.掌握对象的初始化和赋值的方法。
3.了解成员函数的特性、友元。
4.静态成员的使用方法。
5.理解和掌握this指针的用法。
6.理解和掌握const类型数据的使用。
1.2实验工具与准备工作
在开始实验前,应回顾或复习相关内容。
需要一台主算机,其中安装有VisualC++6.0、VisualC++2005、VisualC++2005Express、Dev-C++等集成开发环境软件。
1.3实验内容
1.先阅读下列程序,写出执行结果。
然后输入程序,调试程序,比较结果的正确性。
//文件名:
main.cpp
#include
usingnamespacestd;//使用标准命名空间std
//直角坐标类
classPoint
{
private:
//数据成员:
intx,y;//横坐标与纵坐标
public:
//公有函数:
Point(inta,intb):
x(a),y(b){}//构造函数
voidSet(inta,intb);//设置坐标值
intGetX()const{returnx;}//返回横坐标
intGetY()const{returny;}//返回纵坐标
};
//直角坐标类及相关函数的实现部分
voidPoint:
:
Set(inta,intb)//设置坐标值
{
x=a;//横坐标
y=b;//纵坐标
}
voidShow(constPoint&pt)//显示坐标值
{cout< intmain(void)//主函数main(void) { Pointa[5]={Point(0,0),Point(1,1),Point(2,2),Point(3,3),Point(4,4)};//由对象组成的数组 Point*p=a;//p指向数组a p->Set(5,9);//设置坐标值 a[3].Set(6,8);//设置坐标值 for(inti=0;i<5;i++) {//依次显示各对象的坐标值 Show(*p++); } system("PAUSE");//调用库函数system(),输出系统提示信息 return0;//返回值0,返回操作系统 } 2.先阅读下列程序,写出执行结果。 然后输入程序,调试程序,比较结果的正确性。 //文件名: main.cpp #include usingnamespacestd;//使用标准命名空间std //日期类 classDate { private: //数据成员: intmonth,day,year;//年月日 public: //公有函数: Date(intm=1,intd=1,inty=2008);//构造函数 //友元 friendvoidShow(constDate&dt);//显示日期 }; //日期类及相关函数的实现部分 Date: : Date(intm,intd,inty)//由m(月),d(日)和y(年)构造对象 { this->month=m;//月 this->day=d;//日 this->year=y;//年 } voidShow(constDate&dt)//显示日期 { cout< } intmain(void)//主函数main(void) { Dated1(6,8,2008),d2(6,18),d3(5),d4;//定义日期对象 Show(d1);//显示d1 Show(d2);//显示d2 Show(d3);//显示d3 Show(d4);//显示d4 system("PAUSE");//调用库函数system(),输出系统提示信息 return0;//返回值0,返回操作系统 } 3.程序填空。 下面程序主要测试静态成员的使用方法,请完成程序。 //文件名: main.cpp #include usingnamespacestd;//使用标准命名空间std //测试静态成员类 classTest { private: //数据成员: staticintcount;//对象数 public: //公有函数: Test(){count++;}//构造函数,实现对对象进行计数 staticvoidShow(){cout<<"共有"< "< }; [1]count=0;//为静态数据成员赋初值 intmain(void)//主函数main(void) { Testobj1,obj2,obj3;//定义对象 Test: : Show();//显示对象数 system("PAUSE");//调用库函数system(),输出系统提示信息 return0;//返回值0,返回操作系统 } 4.改正下面程序中的错误,使其能正常运行。 //文件名: main.cpp//1 #include usingnamespacestd;//使用标准命名空间std//3 //4 //测试构造函数与析构函数类//5 classTest//6 {//7 public: //8 //公有函数: //9 voidTest(){cout<<"构造函数"< void~Test(){cout<<"析造函数"< };//12 //13 intmain(void)//主函数main(void)//14 {//15 Testobj;//定义对象//16 //17 system("PAUSE");//调用库函数system(),输出系统提示信息//18 return0;//返回值0,返回操作系统//19 }//20 5.编写设计一个People(人)类。 该类的数据成员有年龄(age)、身高(height)、体重(weight)和人数(num),其中人数为静态数据成员,成员函数有构造函数(People)、进食(Eatting)、运动(Sporting)、睡眠(Sleeping)、显示(Show)和显示人数(ShowNum)。 其中构造函数由已知参数年龄(a)、身高(h)和体重(w)构造对象,进食函数使体重加1,运动函数使身高加1,睡眠函数使年龄、身高、体重各加1,显示函数用于显示人的年龄、身高、体重,显示人数函数为静态成员函数,用于显示人的个数。 假设年龄的单位为岁,身高的单位为厘米,体重的单位为市斤,要求所有数据成员为protected访问权限,所有成员函数为public访问权限,在主函数中通过对象直接访问类的所有成员函数。 *6.定义一个描述学生(Student)基本情况的类,数据成员包括姓名(name)、学号(num)、数学成绩(mathScore)、英语成绩(englishScore)、人数(count)、数学总成绩(mathTotalScore)和英语总成绩(englishTotalScore)。 其中姓名定义为长度为18的字符数组,其它数据成员类型为整型,数学总成绩、英语总成绩和人数为静态数据成员,函数成员包括构造函数、显示基本数据函数(ShowBase)和显示静态数据函数(ShowStatic),其中构造函数由已知参数姓名(nm)、学号(nu)、数学成绩(math)和英语成绩(english)构造对象,显示基本数据函数用于显示学生的姓名、学号、数学成绩、英语成绩,显示静态数据函数为静态成员函数,用于显示人数,数学总成绩,英语总成绩;要求所有数据成员为private访问权限,所有成员函数为public访问权限,在主函数中定义若干个学生对象,分别显示学生基本信息,以及显示学生人数,数学总成绩与英语总成绩。 1.4实验提示 1.通过构造函数生成对象为对象数组赋初值,属于基本输出cout方面的题目,应注意换行,语句 Point*p=a;//指向p指向数组a p->Set(5,9);//设置坐标值 用于修改对象数组的a[0]的值,而语句 a[3].Set(6,8);//设置坐标值 用于修改对象数组的a[3]的值。 2.注意缺省参数值的使用;对于私有数据成员,可使用友元进行访问。 3.中静态数据成员赋初值的一般形式如下: 数据类型类名: : 静态数据成员名=初值; 参考答案为: [1]intTest: : 4.构造函数与析构函数不能有返回值类型,因此应去掉第10行和第11行的void。 5.只要按题目要求编程实现即可,建议将比较短的函数在类体中实现,比较长的函数在类体外实现。 6.可仿照第5题编程实现,当然学生现实后还可灵活处理,比如定义学生数组存储学生信息,由count的值作为学号(此时构造函数的参数中不需要学号的信息)。 1.5实验步骤 以实验内容第5题为例说明实验步骤。 具体实现步骤如下: 1.建立工程exp2_5。 2.建立源程序文件main.cpp,具体内容如下: //文件名: main.cpp #include usingnamespacestd;//使用标准命名空间std //人(people)类 classPeople { protected: //数据成员: intage;//年龄 intheight;//身高 intweight;//体重 staticintnum;//人数 public: //公有函数: People(inta,inth,intw);//构造函数 voidEatting(){weight++;}//进食使体重加1 voidSporting(){height++;}//运动使身高加1 voidSleeping();//睡眠 voidShow()const;//显示人的信息 staticvoidShowNum()//显示人数 {cout<<"人数: "< }; intPeople: : num=0;//初始化静态数据成员num //人(people)类的实现部分 People: : People(inta,inth,intw): age(a),height(h),weight(w) {num++;}//由已知信息构造对象,人数num将自加1 voidPeople: : Sleeping()//睡眠 { age++;//睡眠使年龄加1 height++;//睡眠使身高加1 weight++;//睡眠使体重加1 } voidPeople: : Show()const //显示人的信息 { cout<<"第"< "< cout<<"年龄: "< cout<<"身高: "< cout<<"体重: "< cout< } intmain(void)//主函数main(void) { Peopleobj1(8,120,60);//定义对象 obj1.Eatting();//进食 obj1.Sporting();//运动 obj1.Sleeping();//睡眠 obj1.Show();//显示信息 Peopleobj2(18,170,108);//定义对象 obj2.Eatting();//进食 obj2.Sporting();//运动 obj2.Sleeping();//睡眠 obj2.Show();//显示信息 People: : ShowNum();//显示人数 system("PAUSE");//调用库函数system(),输出系统提示信息 return0;//返回值0,返回操作系统 } 3.编译及运行程序。 1.6测试与结论 以实验内容第5题为例进行测试,测试时,屏幕显示如下: 第1个人: 年龄: 9岁 身高: 122厘米 体重: 62市斤 第2个人: 年龄: 19岁 身高: 172厘米 体重: 110市斤 人数: 2 请按任意键继续... 从上面的屏幕显示,可知本程序满足实验内容第5题的要求。 实验2继承与派生 2.1实验目的 1.熟练掌握类的继承,能够定义和使用类的继承关系。 2.掌握派生类的声明与实现方法。 3.掌握类构造函数的初始化列表与作用域分辨符的使用方法。 4.理解虚基类在解决二义性问题中的作用。 2.2实验工具与准备工作 在开始实验前,应回顾或复习相关内容。 需要一台主算机,其中安装有VisualC++6.0、VisualC++2005、VisualC++2005Express、Dev-C++或MinGWDeveloperStudio等集成开发环境软件。 2.3实验内容 1.先阅读下列程序,写出执行结果。 然后输入程序,调试程序,比较结果的正确性。 //文件名: main.cpp #include usingnamespacestd;//使用标准命名空间std classA { public: //公有函数: A(){cout<<"构造A"< ~A(){cout<<"析构A"< }; classB: publicA { public: //公有函数: B(){cout<<"构造B"< ~B(){cout<<"析构B"< }; classC: publicB { public: //公有函数: C(){cout<<"构造C"< ~C(){cout<<"析构C"< }; intmain(void)//主函数main(void) { Cobj;//定义对象 system("PAUSE");//调用库函数system(),输出系统提示信息 return0;//返回值0,返回操作系统 } 2.先阅读下列程序,写出执行结果。 然后输入程序,调试程序,比较结果的正确性。 //文件名: main.cpp #include usingnamespacestd;//使用标准命名空间std classA { protected: //数据成员: inta;//数据成员 public: //公有函数: A(intx): a(x){}//构造函数 voidShow()const{cout< }; classB { protected: //数据成员: intb;//数据成员 public: //公有函数: B(intx): b(x){}//构造函数 voidShow()const{cout< }; classC: publicA,publicB { public: //公有函数: C(intx,inty): A(x),B(y){}//构造函数 voidShow()const//显示b之值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 实验 指导