面向对象程序设计C实验指导精简版befineWord下载.docx
- 文档编号:13328854
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:10
- 大小:24.40KB
面向对象程序设计C实验指导精简版befineWord下载.docx
《面向对象程序设计C实验指导精简版befineWord下载.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计C实验指导精简版befineWord下载.docx(10页珍藏版)》请在冰豆网上搜索。
五、注意事项
所有实验要求独立完成,同学之间可以讨论,但严禁抄袭,若发现雷同,抄袭者和被抄袭者此次实验成绩均记零分。
实验一C++基础(2课时)
实验目的和要求:
1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2.理解C++程序结构的特点。
3.熟悉C++程序的基本输入输出操作。
4.掌握内联函数的使用方法。
5.掌握函数重载的定义和使用方法。
6.掌握C++内存的动态分配与释放方法。
7.理解引用的概念,掌握引用的使用方法。
预习内容:
cin/cout的使用;
new和delete的使用;
函数重载;
const常量。
实验内容:
1、用内联函数编写Fibonacci级数,使用if语句判断函数的出口,在程序中用cout语句输出提示信息,Fibonacci级数的公式为:
内联函数inlineintfib(intn)。
2、程序Ex_Swap实现数据交换。
分别用指针和引用作为函数mySwap的形参,并通过重载int、double型变量值的交换。
3、设计一个函数,形参是引用类型,要求输入三个整数(cin输入,cout提示输入),按从小到大排序后输出,编程完整的程序并测试。
4、程序Ex-Number实现下述功能:
由17人围成一个圈,编号1~17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1个人,求此人的编号(要求用new和delete来分配、释放所需内存空间)。
5、设计一个简单的计算器,能够进行加法、减法、乘法和除法功能(整数和浮点数)。
格式是先输入一个数,然后输入运算符号,输入另一个数字,最后输出结果。
(选做)
实验二类与对象
(一)(2课时)
1.掌握类、类的数据成员、类的成员函数的定义方式。
2.理解类成员的访问控制方式。
3.掌握对象的定义和操作对象的方法。
4.理解构造函数和析构函数的定义与执行过程。
5.掌握重载构造函数的方法。
6.了解拷贝构造函数的方法。
预习内容
类(数据成员和成员函数)的定义与访问权限设置;
类的构造函数与析构函数的定义与使用。
1、定义一个score类,其中包括私有数据成员和公有成员函数,即
num学号
Math高等数学成绩
English英语成绩
Programming程序设计成绩
Inscore()输入学号和各科成绩,并计算平均成绩
showscore()输出学号和各科成绩
使用score类,输入某班n个学生的学号和各科成绩,然后求各个学生的平均成绩,并列表输出学生的学号、各科成绩和平均成绩。
2、定义日期类型Date。
要求:
(1)包含年月日数据成员;
提供默认构造函数、带年月日参数的构造函数、和拷贝构造函数;
定义set成员函数可以设置日期;
日期加一天操作;
定义intput成员函数,输入日期信息,输入格式为“YYYY-MM-DD”;
定义print成员函数输出对象的日期。
(2)编写一个可运行的完整程序,构造3个日期类型的对象,并输出相应的日期信息。
(3)实现日期类型的对象的加减法运算。
3、定义一个类Stock,记录一支股票交易的基本信息,信息包括交易日序号(表示本月的第几个交易日,用整数表示)、当日最高价、当日最低价、当日开盘价和当日收盘价。
尽量发挥想像力,为该类设计成员函数。
4、在主函数中建立两个股票对象,分别存储该股票昨天和今天两天的信息,以当日收盘价计算该股票今天的涨幅。
实验三类与对象
(二)(2课时)
1.掌握静态成员的定义与使用。
2.理解对象指针的概念,学会使用指针引用对象。
3.了解this指针的工作方式。
4.掌握静态数据成员和静态成员函数的基本使用方法。
5.理解友元与友元函数的作用,掌握其使用方法。
6.掌握类的接口与实现的分离技术的使用。
指针引用对象;
静态成员的定义与使用;
友元的使用方法;
1.使用实验二中的股票类Stock,定义一个对象数组存放连续5个交易日的股票信息。
编写一个主函数,计算两个Stock对象(前后两日)的当日收盘价计算当日涨幅。
用指针引用对象数组中的两个对象。
在主函数中调用该函数计算从第2个交易日开始每天的当日涨幅。
2.在Stock类中定义一个静态数据成员,记录当前Stock对象的数量。
3.设计一个成员函数Assign_stock为对象赋值,其中的形式参数是对另一个Stock对象的引用,使用this指针避免对自己的赋值,在主函数中显示用Assign_stock赋值的对象。
4.定义一个友元函数计算Stock对象的的当日开盘价是否高于当日收盘价。
若是,返回真,否则,返回假。
实验四派生类与继承
(一)(2课时)
1.理解类的继承的概念,能够定义和使用类的继承关系。
2.掌握派生类的声明与定义方法。
3.理解不同的继承类型
派生类的声明与定义;
不同的继承类型的差异。
1.下面是一个含有派生类的程序:
#include<
iostream.h>
classA{
protected:
//private:
intm,n;
public:
voidset(inta,intb){m=a;
n=b;
}
voidshow(){cout<
<
m<
"
<
n<
endl;
};
classB:
publicA{
ints;
voidsets(){s=m*n;
voidshows(){cout<
s<
endl;
voidmain()
{Bobj;
obj.set(2,3);
obj.show();
obj.sets();
obj.shows();
}
在这个程序中,B类的函数sets()能否访问类A中的变量m和n?
为什么?
如果在类A中把m和n定义为私有成员,上面的程序能否通过编译?
2.定义一个基类MyArray,基类中可以存放一组整数。
(实验程序注意保留,下次实验要用)
classMyArray
{
public:
MyArray(intleng);
~MyArray();
voidInput();
voidDisplay();
Protected:
int*alist;
//指向动态申请的一组空间
intlength;
//整数的个数
(1)基类中有构造函数、析构函数、输入数据和输出数据的函数。
(2)定义一个SortArray继承自MyArray,在该类中定义函数实现排序功能。
(3)定义一个类ReArray继承自MyArray,在该类中定义函数实现逆转功能。
(4)定义一个类AverArray继承自MyArray,在该类中定义函数Aver()求解整数的平均值。
3.建立一个建筑物类的层次体系。
其中,基类building包括保护数据成员name(建筑物名称)、floors(层数)和areas(总面积),由building类派生住宅类house和办公楼类office;
住宅类house包括私有数据成员rooms(房间数)和balcony(阳台数);
办公楼类office包括私有数据成员offices(办公室数)和meetingrooms(会议室数)。
住宅类house和办公楼类office都含有构造函数和print函数,以分别用于对数据成员的初始化和输出。
在主函数中,实例化house类和office类对象并且将其数据输出。
实验五派生类与继承
(二)(2课时)
1.熟悉公有派生和私有派生的访问特性。
2.掌握单继承与多继承
3.学习虚基类在解决二义性问题中的作用。
公有派生和私有派生的访问特性
1、定义NewArray类,同时继承了上次实验SortArray、ReArray和AverArray,使得NewArray类的对象同时具有排序、逆转和求平均值的功能。
在继承的过程中声明为虚基类,体会虚基类在解决二义性的作用。
2、定义一个动物(Animal)基类,具有Age、Weight等数据成员,由Animal类公有派生出鱼(Fish)类、陆地动物(TerrestrialAnimal)类。
Fish类有鳍(Fim)属性,TerrestrialAnimal类有腿(Leg)属性。
从Fish和TerrestrialAnimal公有派生出爬行动物(Reptile)类,在继承过程中,注意把Animal设置为虚基类。
如果不把Animal设置为虚基类,会有什么问题?
编程试试看。
当一个类有多个类派生而来,每个类的父类最总都归为一个类时,这个时候创建这个最后的子类是就会产生内存中的多份拷贝,为类避免这种现象发生,就要求使用虚继承。
虚继承的格式:
class子类:
virtual继承方式父类
实验六多态性(2课时)
1、理解静态多态性和动态多态性。
2、掌握虚函数的定义与使用方法。
静态多态性和动态多态性;
虚函数的定义与使用方法。
1、
(1)定义一个类Animal,该类中可以存放动物的名字,并有一个Identify函数用于显示动物的种类。
(2)定义两个类Cat和Dog,都继承自Animal,并重载Identify函数,不但要显示动物的种类,还要显示动物的名字。
(3)定义Tiger类,继承自Cat,重载Identify函数,显示动物的种类和名字。
2、定义一个动物园类Zoo,管理动物,根据下面的提示编写动物类及相关函数。
classzoo
zoo(unsignedintmax);
//构造函数,max为最多圈养的动物数
~zoo(){deleteresidents;
}//析构函数
unsignedintAccept(Animal*d);
//接收动物
voidListAnimals();
//显示动物园所有的动物
private:
unsignedintmaxanimals;
//动物园最多能圈养的动物数
unsignedintnumanimals;
//动物园当前圈养的动物数
Animal**residents;
//指向动物园圈养的动物对象的指针数组
3、编写程序Ex_Shape:
定义一个类CShape,包含两个虚函数Area(用来计算面积)和SetData(用来设计形状大小)。
然后派生出矩形CRect类、圆CCircle类,分别求其面积。
最后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 实验 指导 精简 befine
![提示](https://static.bdocx.com/images/bang_tan.gif)