您好,欢迎来到九壹网。
搜索
您的当前位置:首页(修正版)《面向对象》实验指导书

(修正版)《面向对象》实验指导书

来源:九壹网
《面向对象程序设计》实验指导书

林煜明

应用科技学院

实验一 简单C++程序的设计

1、实验目的

熟悉VC6.0的运行环境,通过编写简单的C++程序,学会在VC6.0中编辑、编译、运行和调试程序。

2、实验内容

以下内容(1)和(2)必做,(3)可根据具体情况选做。

(1) 编写程序,实现输入两个整数,计算并输出其结果,要求显示相应的交互信息。

(2) 将(1)中的功能使用函数实现,并在main函数中要求由用户确定是否继续。提示:每计算完一次,提示用户输入Y/N,输入Y则继续调用,输入N则推出程序。

(3) 编写一个有助于小学生学习乘法的程序,利用rand函数生成两个一位的正整数。随后,函数输入如下所示的问题:How much is 6×7?然后学生输入答案。由程序检查学生的答案。如果正确,就打印“Very good!”;如果答案错误,就打印“Error!Please try again。”让学生再次输入答案,直到正确为止。注:rand函数包含在stdlib.h头文件中。

3、实验要求

(1) 完成实验。

(2) 实验前需先完成预习报告,报告中应预先编写好源程序。

2

(3) 实验过程中尽量思考,培养分析问题和解决问题的能力。

(4) 实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

3

实验二 函数模板和带有缺省参数的函数

1、实验目的

掌握函数模板和带有缺省参数的函数的定义,理解函数模板的作用,此外还应注意对带有缺省参数的函数进行调用时的具体情况。

2、实验内容

以下内容中可根据具体情况(1)和(2)选一,(3)和(4)选一。

(1) 设计一个函数模板,它返回三个值中的较大值,并用int、char、double型的值进行验证。

(2) 编写程序,在主函数中输入两个值,然后将这两个值交换。要求用函数模板来实现函数swap(x,y)实现值得交换,并分别用整形和字符型的值进行测试。

(3) 设计一个函数int Addnum(int x),该函数接收用户输入x个整数,并将它们相加求值,x的默认值为5。编写相应的main函数,并对Addnum函数进行调用。要求调用Addnum函数时分别采用默认值和设定值两种方式。

(4) 编写一个具有5个参数的函数,其中3个具有默认值,然后在main函数中针对参数不同的设置情况进行调用,要求运行时显示参数的设置情况。

3、实验要求

4

(1)完成实验。

(2)实验前需先完成预习报告,报告中应预先编写好源程序。

(3)实验过程中尽量思考,培养分析问题和解决问题的能力。

(4)实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

5

实验三 函数重载

1、实验目的

学会利用C++语言的基本知识编写程序,理解程序的结构。特别注重掌握函数重载、引用的使用等。

2、实验内容

以下内容可根据具体情况至少选做两题。

(1) 编写一个函数,该函数能求出某个字符串的长度。然后再分别定义一个重载函数,能对整数求其长度(即数值中的位数)。最后,编写一个主函数并对以上两个函数的功能进行测试和验证。

(2) 利用函数重载,分别定义两个函数,能查找一个整数是否在一个整数数组内存在,并且查找一个字符串是否在一个字符串指针数组内,如果存在则返回所在数组元素的下标,如果不存在则返回-1。最后编写main函数进行调用,并测试其结果。

(3) 编写一个函数,该函数能对一个整数数组进行倒置;然后再定义一个重载函数,该函数能对字符串指针数组中的字符串进行倒置;最后编写main函数进行调用,并测试结果。

3、实验要求

(5) 完成实验。

6

(6) 实验前需先完成预习报告,报告中应预先编写好源程序。

(7) 实验过程中尽量思考,培养分析问题和解决问题的能力。

(8) 实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

7

实验四 类和对象

1、 实验目的

掌握类和对象的定义方法、成员函数的实现与调用方法,深刻领会类与对象的区别、类实现数据隐藏与封装的原理等。

2、 实验内容

以下内容可根据具体情况至少选做两题。

(1) 定义一个Data类,包括year、month、day三个数据成员,通过set_date成员函数输入出生日期数据,通过disp_date成员函数将其输出,并设计出相应的程序测试类功能。

(2) 定义一个两点坐标与距离的类,输入坐标上的两点,计算出两点之间的距离,并输出。同时设计出相应的程序测试类的功能。

(3) 定义一个类,输入若干名学生的学号、姓名和成绩,然后显示这个数据并计算出平均分。同时设计出相应的程序测试类的功能。

(4) 定义一个正方体类Cube,输入变长的值、计算并输出立方体的表面积和体积。同时设计出相应的程序测试类的功能。

(5) 定义一个矩形类,内有私有数据成员代表长和宽,成员函数用于取长和取宽,成员函数print( )用于打印长×宽的矩形,如长为10,宽为4的矩阵如下:

8

**********

**********

**********

**********

3、 实验要求

在编写程序时,将类的定义写成头文件(.h),类的实现写成.cpp文件,即把类的定义与类的实现代码分成不同的文件来保存。在后面的实验中,也应该养成这样的习惯。

(1)完成实验。

(2)实验前需先完成预习报告,报告中应预先编写好源程序。

(3)实验过程中尽量思考,培养分析问题和解决问题的能力。

(4)实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

9

实验五 构造函数和析构函数

1、 实验目的

掌握类的构造函数的定义方法、构造函数的重载、析构函数的定义方法、掌握对象数据成员的初始化方法。深刻领会构造函数和析构函数被调用的时间和特点以及它们在程序中的作用、类与对象的区别、类实现数据隐藏与封装的原理等。

2、 实验内容

以下内容可根据具体情况至少选做两题。

(1) 写一段代码说明构造函数和析构函数何时被调用,并测试它。

(2) 以下是产品类Product的定义,但没有类的实现部分,请根据类的定义编写类的实现部分的代码,并编写相应的对所定义的类进行测试的程序。

(3) class Product

{

private:

char *name; //产品名称

int price;

10

//产品单价

int quantity; //产品剩余量

public:

Procduct(char *a, int b, int c); //构造函数

void purchase(int money); //购买产品

void remain(); //显示剩余产品数量

~Product(); //析构函数

};

(4) 以下是图书类Book的定义,但没有类的实现部分,请根据类的定义编写类的实现部分的代码,并编写相应的对所定义的类进行测试的程序。

class Book

{

private:

char *name; //书名

int *author;

11

//作者

int sale; //销售量

public:

Book( ); //默认构造函数

Book(char *a, char *b, int c); //构造函数

void print( ); //输出函数

~Book( ); //析构函数

};

(5) 设计两个有意义的类,使一个类的对象作为另一个类的数据成员。

3、 实验要求

(1)完成实验。

(2)实验前需先完成预习报告,报告中应预先编写好源程序。

(3)实验过程中尽量思考,培养分析问题和解决问题的能力。

(4)实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部

12

分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

13

实验六 友元函数与友元类

1、实验目的

掌握友元函数和友元类的说明方法,理解友元函数和友元类的使用特点。

2、实验内容

(1)~(4)可根据具体情况至少选做两题,然后再做(5)相应的题目。

(1) 利用友元函数求两个数的平方差。

(2) 编写程序,设计一个友元函数比较学生成绩的高低,并输出所有学生中最高分和最低分学生的姓名。

(3) 日期类Date包含日期的年、月、日三个数据成员,编写一个友元函数,求两个日期之间相差的天数。

(4) 点类Point,包含点的坐标x和y两个数据成员,设计两个友元函数,分别计算两点间的水平距离和垂直距离。

(5) 采用友元类方式重新编写以上各题的程序。

3、实验要求

(1)完成实验。

14

(2)实验前需先完成预习报告,报告中应预先编写好源程序。

(3)实验过程中尽量思考,培养分析问题和解决问题的能力。

(4)实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

15

实验七 静态成员

1、实验目的

掌握类中静态成员的定义方法,掌握静态数据成员的初始化方法、静态数据成员和静态成员函数的访问和使用方法。

2、实验内容

以下内容可根据具体情况至少选做一题。

(1) 编写程序,统计某旅馆住宿客人的总数。要求输入客人的姓名,输出客人编号(按先后顺序自动生成)、姓名以及总人数。

(2) 编写程序,统计歌手大赛参赛人数,每名选手的平均得分。要求一次输入选手的编号、姓名、各评委的打分;输出参赛总人数,并按平均分由高到低的顺序输出每位选手的名次、姓名、平均得分。

3、实验要求

(1)完成实验。

(2)实验前需先完成预习报告,报告中应预先编写好源程序。

(3)实验过程中尽量思考,培养分析问题和解决问题的能力。

16

(4)实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

17

实验八 继承和派生

1、实验目的

掌握利用单继承和多重继承的方式定义派生类的方法;深刻理解在各种继承方式下构造函数和析构函数的执行顺序;理解和掌握公有继承、私有继承和保护继承对基类成员的访问机制;理解虚基类的概念以及引入虚基类的目的和作用。

2、实验内容

以下内容可根据具体情况至少选做两题。

(1) 设计A、B两个类,包含自己的缺省构造函数。由类A派生出新类C,并在C中包含类B的一个成员对象,且不创建类C的构造函数。创建类C的一个对象,观察其结果。

(2) 设计一个圆类Circle和一个桌子类Table,在设计一个圆桌类Roundatable,它是从前两个类派生出来的。要求输出圆桌的高度、面积、颜色等数据。其中,类Circle包含数据成员radius和圆面积的成员函数,类Table包含数据成员height和返回高度的成员函数,类Roundtable再添加数据成员color和相应的成员函数。

(3) 设计一个基类Person,包含name和age两个数据成员;由它派生出学生类Student和教师类Teacher,其中学生类添加学号,教师类添加职称信息;每个类均有构造函数和析构函数;编程实现,并用一些数据进行测试。

(4) 求长方形和等腰三角形的面积都需要两个数据,设计一个类Data管理这两个数

18

据,由它派生出长方形类和等腰三角形类,并求出其面积。

(5) 设计一个汽车类Vehicle,包含数据成员车轮数和车重,由它派生出类Car和类Truck,前者包含载客数,后者包含载重量。编写程序实现。

3、实验要求

(1)完成实验。

(2)实验前需先完成预习报告,报告中应预先编写好源程序。

(3)实验过程中尽量思考,培养分析问题和解决问题的能力。

(4)实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

(5)画出程序中各个类和派生类的继承关系图。

19

实验九 虚函数与多态性

1、实验目的

掌握虚函数的定义方法及其在实现多态性中的作用,理解和掌握实现多态性的前提条件,理解静态多态性和动态多态性的区别。

2、实验内容

以下内容可根据具体情况至少选做两题。

(1)已知基类:

class Base

{

public:

virtual void I_am()

{

cout<<”Base”<}

20

};

要求:

① 从Base类中派生出两个类,分别定义I_am()函数,实现输出自己类的名字;

② 主函数中分别创建这3个类的对象,用以调用I_am()函数。

③ 主函数中分别利用指向类Base的指针,调用I_am()函数。

(2)编写程序,计算圆柱体、球体、正方体和长方体的表面积和体积。提示:本题中,可以先定义一个抽象类,其中包含一个数据成员和分别求表面积和体积的纯虚函数,然后再此类基础上,派生出圆柱体类、球类、正方体类和长方体类。

(3)设计一个抽象类Vehicle,由它派生出类Car和类Truck。类Car包含名称、颜色、载客数3个数据成员,类Truck包含名称、颜色、载客重量3个数据成员。

(4)编写程序显示动物种类。基类Animal,包含name成员;由它派生2个类:类Mammal和类Bird,前者包含子女数,后者包含生蛋数。

3、实验要求

(1)完成实验。

(2)实验前需先完成预习报告,报告中应预先编写好源程序。

21

(3)实验过程中尽量思考,培养分析问题和解决问题的能力。

(4)实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

(5)画出程序中各个类和派生类的继承关系图。

22

实验十 模板

1、实验目的

进一步加深理解类模板和函数模板的意义和作用,掌握类模板和函数模板的定义方法及在程序中的使用方法。

2、实验内容

以下内容(1)(2)必做。

(1) 设计一个类模板Binfind,它可以用二分法在一个给定的有序数组中查找给定的元素值是否存在,如果存在则输出该元素在数组中的下标值;如果未找到,则输出-1。编写相应的程序测试类模板。注:该题中,类模板中的数组的类型不能定义成固定的某个类型。

(2) 设计一个类模板,它的数据成员至少包含一个类型未定,长度由用户确定的一维数组,成员函数sort()将数组元素按从小到大的顺序排序,printArray(int s,int n)将数组从第s个元素开始共打印出n个元素的值。编写相应的程序测试类模板。

(3)设计一个函数模板,它返回两个值中的较大值,并用int、char、double型的值进行验证

3、实验要求

(1)完成实验。

23

(2)实验前需先完成预习报告,报告中应预先编写好源程序。

(3)实验过程中尽量思考,培养分析问题和解决问题的能力。

(4)实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

24

实验十一 运算符重载

1、实验目的

理解运算符重载的概念和实质,掌握运算符重载函数的定义方法,掌握将运算符重载为类的成员函数和友元函数的方法,掌握和运用几种常用的用C++语言运算符的重载进行解决问题的方法。

2、实验内容

以下内容可根据具体情况至少选做两题。

(1) 编写程序,运用运算符重载实现点类Point的两个对象(即两点)间横、纵坐标的相加运算。

(2) 设计一个person类,包含姓名、年龄等数据成员。要求重载流插入运算符(<<)和流提取运算符(>>),以实现对person类对象信息的输入和输出。

(3) 设计一个长方形类Triangle,包含长和宽两个私有数据成员。要求重载运算符“+”,以实现多个矩形对象的面积之和。

(4) 设计一个复数类Complex,实现两个复数的相加(+)、相减(双目-)以及取负(单目-)的运算。

3、实验要求

25

(1)完成实验。

(2)实验前需先完成预习报告,报告中应预先编写好源程序。

(3)实验过程中尽量思考,培养分析问题和解决问题的能力。

(4)实验完毕后书写实验报告,实验报告内容包括实验目的、实验内容、结果分析以及本次实验的心得体会。要求将程序源码和运行时的输入/输出数据情况书写在实验内容部分,并对程序的输出结果进行分析,说明为什么能得出相应的结果(如果不能输出预期结果,需要分析说明其原因)。

26

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务