面向对象程序设计实验指导书

更新时间:2023-11-06 03:19:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《面向对象程序设计》

实验指导书

信息工程学院计算机系

2007年8月

《面向对象程序设计实验指导书》

面向对象程序设计实验指导书

一、课程基本信息

课程名称 课程编号 适用专业 总学时/实验学时 开课学期 编写/修订者 审核 批准 安兴亚 面向对象程序设计 Object Oriented Programming 060217 计算机科学与技术 60/20 第七学期 单位 计算机系 单位 单位 课程类别 实验类别 学分 开课单位 职务/职称 职务/职称 职务/职称 必修 专业 3.0 计算机系 讲师 二、实验题目与安排 序号 1 实验项目名称 C++简单程序设计 学时 实验 实验 每组 设备指导教分配 性质 类型 人数 台套 师人数 2 2 2 2 2 2 2 2 2 2 开设情况 2 函数的应用 3 类与对象(一) 4 类与对象(二) 5 6 7 8 9 静态成员与友元 数组、指针与字符串 继承性与派生类 虚函数与运算符重载 I/O流与异常处理 10 综合程序设计 1

《面向对象程序设计实验指导书》

三、实验基本要求

1、 上机前的准备工作非常重要:上机前应认真把实验题目在草稿纸上做一做。 2、 上机过程:编写程序,调试程序,运行程序,测试结果等。

3、 每次上机后应总结,把没有搞清楚的问题记录下来,请教老师或同学。 4、 每次实验完成后写一份实验报告(具体格式见学院或系文件)。 四、考核方式

根据实验课考勤、实验操作能力与实验效果、实验报告的完成情况确定最终的实验成绩。实验成绩占课程总成绩的20%。 五、教材及主要参考书

教材:

《C++语言程序设计(第3版)》,郑莉、董渊、张瑞丰 编,清华大学出版社,2003.12,第3版。

主要参考书:

《C++程序设计教程》,钱能编,清华大学出版社,1999.4,第1版。

《C++面向对象程序设计》,陈维兴、林小茶 编,中国铁道出版社,2004.4,第3版。

2

《面向对象程序设计实验指导书》

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

一、实验目的

1. 了解Visual C++ 6.0的特点,熟悉Visual C++ 6.0的开发环境,学习用Visual C++ 6.0编写标准的C++控制台程序; 2. 学会编写简单的C++程序; 3. 学习头文件的作用;

4. 学会使用Visual C++ 6.0开发环境中的debug调试功能:单步执行、设置断点、观察变量值。

二、实验内容

1、使用VC++建立一个非图形化的标准C++程序,编译、运行简单程序。 2、输入并运行以下程序:用do-while语句编程,求自然数1—10之和。程序正确运行之后,去掉源程序中的#include语句,重新编译,观察会有什么问题。

3、编程计算圆形、长方形、正方形的面积,并使用debug调试功能观察程序运行中变量值的变化情况。

4、声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

实验二 函数的应用

一、实验目的

1. 掌握函数的定义和调用方法; 2. 练习重载函数的使用; 3. 练习使用系统函数;

4. 学习使用VC++的debug调试功能,使用Step Into追踪到函数内部。

二、实验内容

1、编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。

3

《面向对象程序设计实验指导书》

2、编写重载函数Max可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。

3、使用系统函数pow(x,y)计算x^y(注:x的y次幂)的值,注意包含头文件cmath。 4、用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。 5、使用内联函数计算圆面积。

实验三 类与对象(一)

一、实验目的

1. 掌握类和对象的声明和使用;

2. 掌握类的数据成员、成员函数的定义方式; 3. 掌握类成员的访问控制方式;

4. 掌握构造函数和析构函数的定义与执行过程; 5. 掌握重载构造函数的方法; 6. 掌握使用拷贝构造函数的方法。

二、实验内容

内容1.

1、声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有三个公有成员函数run、stop和setCPU。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};frequency为单位是MHz的整数,voltage为浮点型的电压值。run和stop函数分别显示“CPU开始运行!”和“CPU停止运行!”。setCPU用于CPU属性的设置。

2、创建一个CPU对象,并用setCPU函数进行属性设置。

3、使用构造函数代替上面的setCPU成员函数,并创建一个CPU对象。

4、重载CPU类的构造函数(不带参数),使rank、frequency、voltage分别为P6、3000、220。

4

《面向对象程序设计实验指导书》

5、定义析构函数,在其中输出信息“Good bye!”。观察构造函数和析构函数的调用顺序。

6、定义拷贝构造函数并调用。 内容2.

1、定义一个Stock类,记录一支股票交易的基本信息,信息包括交易日序号(表示本月的第几个交易日,用整数表示)、当日最高价、当日最低价、当日开盘价和当日收盘价。尽量发挥想象力,为该类设计成员函数。

2、在主函数中建立两个股票对象,分别存储该股票昨天和今天两天的信息,以当日收盘价计算该股票今天的涨幅。

实验四 类与对象(二)

一、实验目的

1. 学习类的组合使用方法;

2. 学习使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析

构函数、成员函数的执行顺序。

二、实验内容

1.声明一个简单的Computer类,在数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。

2.

1、定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。display()显示姓名、街道地址、城市和邮编等属性,change_name改变对象的姓名属性。定义包含5个元素的对象数组,每个元素都是Employee类型的对象。

2、将姓名构造成类Name。其名和姓在该类中为保护数据成员,其构造函数为接受一个指向完整姓名字符串的指针,其Display()函数输出姓名。然后将Employee类中的姓名成员(字符数组)换成Name类对象。

5

《面向对象程序设计实验指导书》

3、构成完整的类定义,要求类定义与类的成员函数定义分开。

3.设计一个用于人员管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、类的组合。

实验五 静态成员与友元

一、实验目的

1. 掌握变量的作用域、生存期和可见性; 2. 掌握类的静态成员的作用; 3. 掌握友元函数的作用与使用方法; 4. 学习多文件结构在C++程序中的使用。

二、实验内容

1、运行下面的程序,分析并观察变量x、y的值。 void fn1(); int x = 1, y = 2; int main()

{ cout << \

cout << \, y = \cout << \int x = 10, y = 20;

cout << \,y = \cout << \fn1();

6

《面向对象程序设计实验指导书》

cout << \

cout << \,y = \return 0; }

void fn1() { int y = 200;

cout << \,y = \}

2、实现实现客户机类(Client)。声明字符型静态数据成员ServerName,保存其服务器名称;声明整型静态数据成员ClientNNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中声明类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化。

3、使用C++的类建立一个简单的玩具销售程序。类内必须具有玩具编号、单价、销售量、种类(每类玩具玩具使用一个编号)等属性,并为该类建立一些必要的成员函数。在主程序中建立若干个玩具类对象,显示每种玩具的销售金额,如果销售金额大于某一值(自己设定),显示“XX玩具畅销”字样。

4、编写一个有关股票的程序,其中有两个类:一个是深圳类Shen_Stock,另一个是上海类Shang_Stock。类中有3项私有数据成员:普通股票个数general、ST股票个数st、PT股票个数pt,每一个类分别有自己的友元函数来计算并显示深圳或上海的股票总数(3项的和)。两个类还共用一个count(),用来计算深圳和上海总共有多少股票并输出。

实验六 数组、指针与字符串

一、实验目的

1. 学习使用数组数据对象; 2. 学习字符串数据的组织和处理;

7

《面向对象程序设计实验指导书》

3. 学习标准C++库的使用; 4. 掌握指针的使用方法;

5. 练习通过debug观察指针的内容及其所指的对象的内容; 6. 练习通过动态内存分配实现动态数组,并体会指针在其中的作用; 7. 分别使用字符数组和标准C++库练习处理字符串的方法。

二、实验内容

1、编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。

2、使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3、编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4、使用string类声明字符串对象,重新实现上一小题。

5、声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。

6、声明包含5个元素的对象数组,每个元素都是Employee类型的对象。

实验七 继承性与派生类

一、实验目的

1.学习声明和使用和类的继承关系,声明派生类; 2.熟悉不同继承方式下对基类成员的访问控制; 3.学习利用虚基类解决二义性问题。

二、实验内容

1、声明一个基类Animal,有私有整型成员变量age,构造其派生类Dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。

2、声明一个基类BaceClass,有整型成员变量Number,构造其派生类DerivedClass,

8

《面向对象程序设计实验指导书》

观察构造函数和析构函数的执行情况。

3、声明一个车(Vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(Bicycle)类、汽车(Motorcar)类。自行车(Bicycle)类有高度(Height)等到属性,汽车(Motorcar)类有座位数(SeatNum)等属性。从Bicycle和Motorcar派生出摩托车(Motorcycle)类,在继承过程中,注意把Vehicle设置为虚基类。如果不把Vehicle设置为虚基类,看会有什么问题,?编程试试看。

实验八 虚函数与运算符重载

一、实验目的

1.掌握运算符重载的方法; 2.学习使用虚函数实现动态多态性。

二、实验内容

1、声明Point类,在类中声明整型的私有成员变量_x、_y,声明成员函数Point& operator++();Point& operator++(int);以实现对Point类重载“++”(自增)运算符,声明成员函数Point& operator--();Point& operator--(int);以实现对Point类重载“--”(自减)运算符,“--”(自减)运算符,实现对坐标值的改变。 2、声明一个车(Vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(Bicycle)类、汽车(Motorcar)类,从Bicycle和Motorcar派生出摩托车(Motorcycle)类,它们都有Run、Stop等成员函数。在主函数中声明Vehicle、Bicycle、Motorcar、Motorcycle的对象,调用其Run()、Stop()函数,观察其其执行情况。再分别用Vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop声明为虚函数,再试试看。

3、编写一个时间类,实现时间的加、减、读和输出。

实验九 I/O流与异常处理

一、实验目的

9

《面向对象程序设计实验指导书》

1.熟悉流类库中常用的类及其成员函数的用法; 2.学习标准输入输出及格式控制;

3.学习对文件的应用方法(二进制文件、文本文件); 4.掌握C++的异常处理机制; 5.学习异常处理的声明和执行过程。

二、实验内容

1、编写程序对10个浮点数进行排序,排序之前用定点控制格式显示数值,排序以后用浮点格式显示数值。

2、输出十进制、八进制、十六进制显示的数据0-64。

3、编写程序,用二进制方式打开指定的一个文件,在每一行前加行号。 4、声明一个异常类CException,有成员函数Reason(),用来显示异常的类型,在子函数中触发异常,在主程序中处理异常,观察程序执行流程。

实验十 综合程序设计

一、实验目的

1.综合运用面向对象程序设计的基础知识;

2.掌握面向对象程序设计中的常用软件开发方法,即问题分析和功能定义、对象设计及实现、核心控制设计、编码与测试、进化(有必要的话);

3.设计一个小型的应用程序,提高解决问题的能力。

二、实验内容

设计一个校园电话簿管理程序,来管理学生和教师的电话号码。学生数据有编号、姓名、班级、成绩、宿舍、电话号码,教师数据有编号、姓名、职称、部门和电话号码。要求将编号、姓名、电话号码等信息设计成一个类person,并作为学生数据操作类student和教师类数据操作类teacher的基类。电话簿具有加入、删除、显示、修改和查询等功能。

10

《面向对象程序设计实验指导书》

1.熟悉流类库中常用的类及其成员函数的用法; 2.学习标准输入输出及格式控制;

3.学习对文件的应用方法(二进制文件、文本文件); 4.掌握C++的异常处理机制; 5.学习异常处理的声明和执行过程。

二、实验内容

1、编写程序对10个浮点数进行排序,排序之前用定点控制格式显示数值,排序以后用浮点格式显示数值。

2、输出十进制、八进制、十六进制显示的数据0-64。

3、编写程序,用二进制方式打开指定的一个文件,在每一行前加行号。 4、声明一个异常类CException,有成员函数Reason(),用来显示异常的类型,在子函数中触发异常,在主程序中处理异常,观察程序执行流程。

实验十 综合程序设计

一、实验目的

1.综合运用面向对象程序设计的基础知识;

2.掌握面向对象程序设计中的常用软件开发方法,即问题分析和功能定义、对象设计及实现、核心控制设计、编码与测试、进化(有必要的话);

3.设计一个小型的应用程序,提高解决问题的能力。

二、实验内容

设计一个校园电话簿管理程序,来管理学生和教师的电话号码。学生数据有编号、姓名、班级、成绩、宿舍、电话号码,教师数据有编号、姓名、职称、部门和电话号码。要求将编号、姓名、电话号码等信息设计成一个类person,并作为学生数据操作类student和教师类数据操作类teacher的基类。电话簿具有加入、删除、显示、修改和查询等功能。

10

本文来源:https://www.bwwdw.com/article/zgr2.html

Top