面向对象程序设计C++实验指导书.docx
《面向对象程序设计C++实验指导书.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计C++实验指导书.docx(14页珍藏版)》请在冰豆网上搜索。
面向对象程序设计C++实验指导书
面向对象的程序设计(C++)实验指导书
物理与信息工程学院电子信息工程系
实验1简单C++程序开发(2学时)
一、实验目的
1.熟悉VC++6.0编程环境;
2.编制简单C++程序并运行;
3.熟悉C++的编辑、编译、连接和运行过程。
二、实验内容及步骤
1.使用VisualC++6.0建立一个标准C++程序,编译、运行以下程序:
具体实验步骤:
1)启动VisualC++6.0开发环境
从“开始”菜单中选择“程序”|MicrosoftVisualStudio6.0|MicrosoftVisualC++6.0,显示VisualC++6.0开发环境主窗口,如图1-1所示。
图1-1VisualC++6.0的主窗口
在VisualC++主窗口的顶部是菜单栏,左侧为项目工作区窗口,右侧是程序编辑窗口。
工作区窗口用来显示所设定的工作区的信息,程序编辑窗口用来输入和编辑源程序。
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所示。
图1-3编辑源文件
选择“File→Save”命令或快捷键Ctrl+S保存源程序文件。
也可以选择“File→SaveAs”命令指定新的文件名和路径,这时输入和编辑的源程序就以example1.cpp为文件名存放在F:
\C++子目录下。
②运行只包含一个C++源程序的方法
若要运行当前的源文件或一个已有的源文件,首先需要对该源文件进行编译,只要选择“Build→Compileexample1.cpp”命令进行编译即可。
在选择编译命令后,屏幕上出现一个对话框,内容是“Thisbuildcommandrequiresanactiveprojectworkspace.Wouldyouliketocreateadefaultprojectworkspace?
”(此编译命令要求有一个有效的项目工作区。
你是否同意建立一个默认的项目工作区?
),如图1-4所示。
图1-4对话框提示信息
单击“是(Y)”按钮,表示同意由系统建立一个默认的项目工作区,然后开始编译。
在进行编译时,编译系统检查源程序文件有无语法错误,然后在主窗口下部的调试信息窗口输出编译的信息。
如果有错误,就会指出错误的位置和性质,如图1-5所示。
图1-5编译提示信息
如果存在致命错误(error)和警告性错误(warning),则需要修改并重新编译;没有错误,则编译成功,生成一个example1.obj文件。
编译成功后,就可以对程序文件进行连接了。
选择主菜单中的“Build→Buildexample1.exe”命令,表示要求连接并建立一个可执行文件example1.exe。
运行该文件,在屏幕就可以看到输出结果。
2.建立一个多文件的程序,求最大值。
主函数放在一个文件中,Max函数放在另一个文件中。
如果一个程序中包含多个文件,则需要建立一个projectfile(项目文件),projectfile是放在Workspace(项目工作区)中,并在项目工作区的管理下工作的,因此,如果有多个项目文件存在时,还需要建立一个项目工作区。
在编译时,先分别对每个文件进行编译,然后将项目文件中的文件连接成一个整体,再与系统的有关资源进行连接,生成一个可执行文件,最后执行这个文件。
在实际操作时有两种方法:
一种是由用户建立项目工作区和项目文件;另一种是用户只建立项目和文件,而不建立项目工作区,由系统自动建立项目工作区。
后一种方法比前一种方法操作更简单。
由用户建立项目工作区和项目文件的具体操作为:
1)分别编辑好同一个程序的多个源程序文件,并存放在指定的目录下。
如一个程序包含两个源程序文件file1.cpp和file2.cpp,如图1-6、1-7所示,并已经把它们保存在F:
\C++子目录下。
图1-6file1.cpp源文件
图1-7file2.cpp源文件
2)建立一个项目工作区
建立一个项目工作区需要在MicrosoftVisualC++6.0的主窗口中选择“File→New”命令,然后单击此对话框上方的Workspace选项卡,在对话框右部Workspacename和Location中分别输入工作区名ws1和路径名F:
\C++\ws1,如图1-8所示。
图1-8选择File→New命令Workspace选项卡
单击“OK”按钮,返回主窗口。
此时在屏幕左部的工作区窗口中显示了“Workspace‘ws1’:
0project(s)”,说明当前的工作区名是ws1,其中没有放入项目文件,如图1-9所示。
图1-9新建工作区ws1
3)建立项目文件
选择“File→New”命令,然后单击此对话框上方的Project选项卡,在对话框左部的列表中选择“Win32ConsoleApplication”项,在右部Projectname和Location中分别输入项目文件名Project和路径名F:
\C++\ws1\project1,并按需要选中是否加入当前工作区,还是创建一个新的工作区单选按钮(假设选择加入当前已有工作区),如图1-10所示。
图1-10选择File→New命令Project选项卡
单击“OK”按钮后,在弹出的对话框上选中“Anemptyproject”单选按钮,单击“Finish”按钮,则系统弹出一个工程信息对话框,单击“OK”按钮,出现图1-11所示对话框。
可以看到在屏幕左部的工作区窗口中显示了“Workspace‘ws1’:
1project(s)”,说明当前的工作区名是ws1,其中已经放入了项目文件project1。
图1-11新建的项目文件project1
项目文件建好后,选择将源程序文件加入到该项目文件中。
选择“Project→AddToProject→Files”命令,找到要加入的源程序文件file1.cpp和file2.cpp,把他们加入到项目文件project1中,其显示结果如图1-12所示。
此时可以对加入多个源程序文件的项目文件进行编译和连接了。
方法是:
单击主菜单中的“Build→BuildProject1.exe”命令,系统将对整个项目文件进行编译和连接,在窗口下部会显示编译和连接的信息。
如果程序有错,会显示出错信息,这时需要进行修改;如果没错,则生成可执行文件Project1.exe。
选择主菜单中的“Build→ExecuteProjrct1.exe”命令就可以执行project1.exe。
图1-12加入file1.cpp和file2.cpp的project1
在程序运行时,根据要求输入所需的数据,回车后即得到程序的输出结果。
实验2类与对象(2学时)
一、实验目的
1.掌握C++类的概念和基本组成,学会设计类,掌握类对象的声明和使用方法;
2.熟悉各种成员函数包括构造函数、析构函数、内嵌函数的定义与使用;
3.掌握静态数据成员的使用。
二、实验内容及步骤
1.声明一个Circle类,有
1)数据成员Radius(半径)
2)成员函数GetArea()计算圆的面积
3)构造函数Circle(floatradius)进行初始化
4)析构函数
在主函数中创建一个Circle类的对象进行测试(输入一个数值,作为Circle类对象的半径,调用该对象的GetArea()求以该数值为半径的圆的面积)。
2.声明一个tree类,有
1)数据成员ages(树龄)
2)成员函数grow(intyears)对ages加上years
3)成员函数age()显示对象的数据成员ages的值
4)构造函数tree(intn=0)进行初始化
5)析构函数
在主函数中创建一个tree类的对象进行测试(创建一个树龄为18的对象,调用age()显示树龄,之后调用grow(4),生长4年,再显示树龄)。
3.改正以下程序中的错误,并分析错误原因。
提示:
该程序中point类的构造函数定义不正确,在main()中对数据成员的访问不正确。
要求修改程序后,在主函数中创建一个对象并初始化为坐标(5,5),然后输出这个点的X,Y坐标。
4.声明一个名为Rectangle的矩形类,其属性为矩形的左下角和右上角两点的坐标,并有成员函数计算矩形的周长及面积。
编程实现求左下角与右上角坐标分别为(2.1,3.2),(5.2,6.3)的矩形周长及面积。
实验3函数、指针、数组
一、实验目的
1.掌握指针的声明、使用和运算;熟悉引用的声明与特点。
2.学会数组与指针、函数与指针的使用方法。
3.掌握函数的声明、调用、实参与形参的值传递关系、返回值;
4.理解函数重载,掌握函数重载的方法;
二、实验内容及步骤
1.编写程序:
定义一个变量,一个指针,建立该变量的引用。
对变量进行初始化,并将指针指向该变量,分别通过指针和引用改变该变量的值,并输出结果进行比较分析。
2.编写程序:
任意输入10个整数放于数组中,利用指针访问数组,求出该数组中的最大数max以及最小数min。
3.编写程序:
定义c风格字符串,删掉字符串中的数字字符。
4.用重载函数实现两个整数和三个整数的排序,按照从小到大的顺序将排序结果输出。
1)声明函数sort为重载函数,并根据参数个数的不同分别进行定义;
2)在main中用cin分别输入两个整数和三个整数;
3)根据参数个数的不同,调用不同的函数,从而实现重载。
5.在主函数中定义两个变量,调用交换函数实现两个数的交换。
分别用指针和引用作参数来编写交换函数。
(体会引用的作用)
实验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。
定义虚函数来计算教师的工资,并通过主函数来进行验证。