面向对象程序设计C++实验指导书Word文档下载推荐.docx
《面向对象程序设计C++实验指导书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计C++实验指导书Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
2)建立和运行只包含一个C++源程序的方法
①建立只包含一个C++源程序的方法
一个最简单的C++程序只包含一个源程序的文件,建立这样的一个C++源程序的方法是在MicrosoftVisualC++主窗口的菜单栏中选择“File→New”命令,弹出“New”对话框,单击“Files”选项卡,在其列表框中选择“C++SourceFile”选项,表示要建立一个新的C++源程序文件,然后在对话框右半部分的Location文本框中输入准备编辑的源程序文件的存储路径(假设为F:
\C++),表示准备编辑的源程序文件将存放在F盘C++子目录下,在其上方的File文本框中输入准备编辑的源程序文件的名字(假设为example1.cpp),如图1-2所示。
图1-2Files中New选项卡
单击“OK”按钮回到主窗口,在程序编辑窗口编辑源程序文件,如图1-3所示。
选择“File→Save”命令或快捷键Ctrl+S保存源程序文件。
也可以选择“File→SaveAs”命令指定新的文件名和路径,这时输入和编辑的源程序就以example1.cpp为文件名存放在F:
\C++子目录下。
②运行只包含一个C++源程序的方法
若要运行当前的源文件或一个已有的源文件,首先需要对该源文件进行编译,只要选择“Build→Compileexample1.cpp”命令进行编译即可。
图1-3编辑源文件
在选择编译命令后,屏幕上出现一个对话框,内容是“Thisbuildcommandrequiresanactiveprojectworkspace.Wouldyouliketocreateadefaultprojectworkspace?
”(此编译命令要求有一个有效的项目工作区。
你是否同意建立一个默认的项目工作区?
),如图1-4所示。
图1-4对话框提示信息
单击“是(Y)”按钮,表示同意由系统建立一个默认的项目工作区,然后开始编译。
在进行编译时,编译系统检查源程序文件有无语法错误,然后在主窗口下部的调试信息窗口输出编译的信息。
如果有错误,就会指出错误的位置和性质,如图1-5所示。
如果存在致命错误(error)和警告性错误(warning),则需要修改并重新编译;
没有错误,则编译成功,生成一个example1.obj文件。
编译成功后,就可以对程序文件进行连接了。
选择主菜单中的“Build→Buildexample1.exe”命令,表示要求连接并建立一个可执行文件example1.exe。
运行该文件,在屏幕就可以看到输出结果。
图1-5编译提示信息
2、引用类型和指针类型参数传递
比较教材P80-81中5_6.cpp和5_7.cpp代码,并运行、理解。
3、数组类型参数传递
学习教材P82中的5_9.cpp代码,理解数组类型参数传递的形式。
4、初步学习类和对象的概念
学习教材P94中的代码实例,学会创建一个Student类,并使用它。
实验报告传至fzu_cpp@pw:
qwerty
邮件名和文件名:
学号_姓名_实验1.doc/docx
实验2类与对象(2学时)
1.掌握C++类的概念和基本组成,学会设计类,掌握类对象的声明和使用方法;
2.熟悉各种成员函数包括构造函数、析构函数、内联函数的定义与使用;
3.掌握静态数据成员的使用。
1.声明一个Circle类,有:
数据成员Radius(半径),成员函数GetArea()计算圆的面积,构造函数Circle(floatradius)进行初始化和析构函数。
在主函数中创建一个Circle类的对象进行测试(输入一个数值,作为Circle类对象的半径,调用该对象的GetArea()求以该数值为半径的圆的面积)。
2.声明一个tree类,有:
数据成员ages(树龄),成员函数grow(intyears)对ages加上years,成员函数age()显示对象的数据成员ages的值,构造函数tree(intn=0)进行初始化,析构函数。
在主函数中创建一个tree类的对象进行测试(创建一个树龄为18的对象,调用age()显示树龄,之后调用grow(4),生长4年,再显示树龄)。
3.声明一个名为Rectangle的矩形类,其属性为矩形的左下角和右上角两点的坐标,并有友元函数计算矩形的周长及面积。
编程实现求左下角与右上角坐标分别为(2.1,3.2),(5.2,6.3)的矩形周长及面积。
并编写一个友元类,类中的成员函数实现坐标点的显示。
#include<
iostream>
usingnamespacestd;
classRectangle
{
protected:
doublex[1][2];
doubley[1][2];
public:
Rectangle:
:
Rectangle()
for(inti=0;
i<
1;
i++)
for(intj=0;
j<
2;
j++)
x[i][j]=0;
for(inti=0;
y[i][j]=0;
}
doubleRectangle:
circumference(Rectanglea,Rectangleb)
{doublec;
c=abs(a.x[0][0]-b.x[0][0])*2+abs(a.x[0][1]-b.x[0][1])*2;
cout<
<
”周长为:
”<
c<
endl;
returnc;
area(Rectanglea,Rectangleb)
doubled;
d=abs(a.x[0][0]-b.x[0][0])*abs(a.x[0][1]-b.x[0][1]);
“面积为:
d<
returnd;
frienddoublexianshi(Rectanglea,Rectangleb)
cout<
”坐标点1为:
(”<
a.x[0][0]<
””<
a.x[0][1]<
”)”<
”坐标点2为:
b.x[0][0]<
b.x[0][1]<
voidmain()
Rectanglea1(2.1,3.2),a2(5.2,6.3),a3;
a3.circumference(a1,a2);
a3.area(a1,a2);
xianshi(a1,a2);
三、编写实验报告
实验3运算符重载
1.理解运算符重载的意义和重载规则;
2.掌握运算符重载为成员函数和友元函数的方法;
3.掌握单目运算符和双目运算符的重载方法。
1.有两个矩阵a和b,均为2行3列。
1)求两个矩阵之和。
重载运算符“+”,使之能用于矩阵相加。
如:
c=a+b。
2)如果参加运算的两个操作数中一个是整数,即矩阵+3或3+矩阵形式。
进行加法运算时也能得出和。
2.定义一个复数类Complex,重载运算符“+”,“-”,“*”,“/”,使之能用于复数的加、减、乘、除运算。
分别重载运算符函数作为Complex类的成员函数和非成员函数。
请编程,分别求两个复数的和、差、积、商。
3.设向量X=(x1,x2,x3)和Y=(y1,y2,y3),则它们之间的加减和积分别定义为:
X+Y=(x1+y1,x2+y2,x3+y3)
X-Y=(x1-y1,x2-y2,x3-y3)
X*Y=(x1*y1+x2*y2+x3*y3)
编程序对运算符“+”、“-”、“*”重载,实现向量之间的加、减、乘运算。
实验4类的继承(2学时)
1.掌握类的继承的类别与方式;
了解派生类中如何使用基类的成员、基类成员在派生类中的访问控制;
2.掌握继承中构造函数和析构函数的调用过程;
3.掌握多基继承的使用与访问方法,并理解类层次中访问规则;
4.掌握虚基类的定义及使用。
1.给出一个Document类,从Document派生出Book类,增加PageCount变量。
在主函数中进行测试,创建Book类对象并进行初始化,输出书名和页数。
2.设计一个单基继承的类层次程序,利用Person类派生出Student类,增加属性xh(学号),Person类中至少有姓名、年龄等数据成员,成员函数中构造函数对其初始化,析构函数释放相应存储单元,输出函数输出其数据成员的值,其它成员函数根据需要添加,在主函数中进行测试。
3.定义一个学生类Student和教师类Teacher,学生类有姓名、学号、私有数据成员,教师类有姓名、工作证号、职称、课程、周学时数。
再定义一个助教类TA,继承学生类和教师类,该类可以使用学生类的全部数据成员,以及教师类的课程和周学时数的数据成员。
要求:
每个类提供自定义的构造函数和析构函数,并通过同名函数ShowInfo来显示全部数据成员的值。
4.设计一个虚基类Person,包含姓名和年龄私有数据成员以及相关的成员函数;
由它派生出领导类Leader,包含职务和部门私有数据成员以及相关的成员函数;
再由Person派生出工程师类Engineer,包含职务和专业私有数据成员以及相关的成员函数;
再由Leader和Engineer类派生出主任工程师类Chairman。
并采用相关数据进行测试。
实验5多态与虚函数
1.理解多态的概念
2.掌握如何用虚函数实现运行时多态
3.掌握如何利用抽象类
1.设计一个图形类(Shape),由它派生出三角形类(Triangle)、正方形类(Square)、圆形类(Circle),利用虚函数计算图形面积,并在主函数中进行测试。
2.定义一个教师类,由教师类派生出讲师、副教授、教授类。
教师的工资分别由基本工资、课时费和津贴构成。
假设讲师、副教授、教授的基本工资分别为800、900、1000元,课时费分别为每小时40、45、50元,津贴分别为1300、1800、2300。
定义虚函数来计算教师的工资,并通过主函数来进行验证。