面向对象程序设计实验指导书Word文件下载.docx
- 文档编号:22578729
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:17
- 大小:219.29KB
面向对象程序设计实验指导书Word文件下载.docx
《面向对象程序设计实验指导书Word文件下载.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验指导书Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
(3)在主cpp文件中编辑源程序,如图2.3所示:
图2.3源程序编辑
(4)进行C++文件的编译、链接和整个工程的运行;
2、简单C++源程序的编写
(1)输入以下程序,进行编译,如果有错误,则修改程序,直到没有错误为止,然后进行链接和运行,并分析运行结果;
/*************************experiment1-2-1.cpp*******************************/
#include"
stdafx.h"
#include<
iostream>
usingnamespacestd;
intmain()
{
voidfun(int,int&
);
intx,y;
fun(3,x);
fun(4,y);
cout<
<
”x+y=<
x+y”<
endl;
return0;
}
voidfun(intm,int&
n)
n=m*5
/****************************************************************************/
(2)编写C++编程风格程序experiment1-2-2.cpp:
计算将100元人民币兑换成1、2、5元的人民币,有多少种换法?
(3)编写C++编程风格程序experiment1-2-3.cpp:
计算并输出两个整数、三个整数、两个双精度数、三个双精度数的最大值(使用函数重载);
三、实验思考题
1、列出experiment1-2-1.cpp中出现的错误,对实验结果进行分析,讨论在函数参数中传递变量、传递引用及传递指针有何区别?
2、附录完整的源程序experiment1-2-2.cpp及其运行结果;
要求源程序格式整齐,并对关键代码进行说明;
3、附录完整的源程序experiment1-2-3.cpp及其运行结果。
C++的类和对象
一、实验目的和要求
1、理解类和对象的概念,掌握声明类和定义对象的方法;
2、掌握构造函数和析构函数的实现方法;
3、掌握对象数组的使用以及使用对象、对象指针和对象引用作为函数参数的方法;
4、掌握静态数据成员和静态成员函数的使用方法;
1、输入以下程序,进行编译、连接和运行,并分析运行结果;
/*************************experiment2-1.cpp*******************************/
string.h"
classCoordinate
public:
Coordinate(intx1,inty1)
{
x=x1;
y=y1;
}
Coordinate(Coordinate&
p);
~Coordinate()
cout<
"
Destructoriscalled\n"
;
for(inti=0;
i<
200000000;
i++);
intgetx()
returnx;
intgety()
returny;
private:
intx;
inty;
};
Coordinate:
:
Coordinate(Coordinate&
p)
x=p.x;
y=p.y;
cout<
Copy-initializationConstructoriscalled!
\n"
Coordinatep1(3,4);
p1.x="
p1.getx()<
\tp1.y="
p1.gety()<
Coordinatep2(p1);
p2.x="
p2.getx()<
\tp2.y="
p2.gety()<
Coordinatep3=p2;
p3.x="
p3.getx()<
\tp3.y="
p3.gety()<
for(inti=0;
2000000000;
return0;
2、编写C++风格源程序:
已有若干学生的数据,包括学号、姓名、成绩,要求输出这些学生的数据并计算出学生的人数和平均成绩(要求将学生的人数和总成绩用静态数据成员表示)。
[提示]程序的参考框架如下:
/*************************experiment2-2.cpp*******************************/
classStudent
//普通数据成员定义:
//静态数据成员定义:
学生数目、总分、平均分数
//声明构造函数
//声明析构函数
//普通成员函数
//声明静态成员函数(可选)
//构造函数、析构函数、普通成员函数、静态成员函数(可选)函数体
//静态数据成员初始化
intmain()
{
//静态成员函数能在对象定义之前调用静态成员函数,以处理静态数据成员(可选)
//定义相应的对象(3-4个);
//数据输出
1、写出并分析experiment2-1.cpp运行的结果;
2、在experiment2-1.cpp中做如下修改:
(1)将Coordinate类中带有两个参数的构造函数进行修改,在函数体内添加:
”constructoriscalled.\n”,写出程序的运行结果,并解释输出结果。
(2)在主函数体内添加语句:
Coordinatep4;
Coordinatep5
(2);
调试程序中会出现什么错误?
为什么?
如何进行适当的修改?
3、附录完整的源程序experiment2-2.cpp及其运行结果;
要求源程序格式整齐,并对关键代码进行说明。
C++的派生类与继承
1、掌握派生类的声明方法和派生类构造函数的定义方法;
2、掌握不同继承方式下,基类成员在派生类中的访问属性;
3、掌握继承方式下、构造函数与析构函数的执行顺序与构造规则;
4、学习虚基类在解决二义性问题中的作用;
1、输入以下程序,进行编译、链接和运行,并分析运行结果;
/*************************experiment3-1.cpp*******************************/
classBase
voidsetx(inti)
x=i;
classDerived:
publicBase
voidsety(inti)
y=i;
voidshow()
Base:
x="
x<
Derivedbb;
bb.setx(16);
bb.sety(25);
bb.show();
bb.x<
Derived:
y="
bb.y<
bb.getx()<
bb.gety()<
2、编写C++编程风格源程序:
实现学生和教师的数据输入和显示程序。
学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。
要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生了Student和教师类Teacher的基类。
[提示]程序的参考框架如下:
/*************************experiment3-2.cpp*******************************/
classPerson
//定义基类的数据成员及成员函数
classStudent:
publicPerson
//定义学生派生类的数据成员及成员函数
classTeacher:
//定义教师派生类的数据成员及成员函数
//相应对象创建及调用
1、写出并分析experiment3-1.cpp运行的结果;
2、在experiment3-1.cpp中做如下修改:
(1)将基类Base中数据成员x的访问权限改为private时,会出现哪些错误?
(2)将基类Base中数据成员x的访问权限改为protected时,会出现哪些错误?
(3)在源程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?
(4)在源程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?
3、附录完整的源程序experiment3-2.cpp及其运行结果,要求源程序格式整齐,并对关键代码进行说明。
C++的多态性
1、了解多态性的概念;
2、掌握运算符重载的基本方法;
3、掌握虚函数的定义和使用方法;
4、了解纯虚函数和抽象类的概念和用法;
/*************************experiment4-1.cpp*******************************/
classB
virtualvoidf1(doublex)
B:
f1(double)"
voidf2(doublex)
f2(double)"
2*x<
voidf3(doublex)
f3(double)"
3*x<
classD:
publicB
D:
voidf2(intx)
f2(int)"
Dd;
B*pb=&
d;
D*pd=&
pb->
f1(1.23);
//语句1
//语句2
f2(1.23);
//语句3
f3(1.23);
//语句4
f3(3.14);
//语句5
2、编写C++风格源程序experiment4-2.cpp:
设计一个时间类Timer,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。
要求将小时范围限制在大于等于0,分钟范围限制在0-59分,秒钟限制在0-59秒。
[提示]时间类的参考框架如下:
/*************************experiment4-2.cpp*******************************/
classTime
Time(inth=0,intm=0,ints=0);
Timeroperator+(Time&
//运算符重载
voiddisptime(string);
inthours;
intminutes;
intseconds;
//补充完整程序的其它部分;
3、给出下列的抽象基类container:
/*************************experiment4-3.cpp*******************************/
classcontainer
protected:
doubleradius;
container(doubleradius);
virtualdoublesurface_area()=0;
virtualdoublevolume()=0;
要求建立3个继承container的派生类cube、sphere与cyline,让每个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。
要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
1、写出并分析experiment4-1.cpp运行的结果;
2、附录完整的源程序experiment4-2.cpp及其运行结果,要求源程序格式整齐,并对关键代码进行说明。
3、附录完整的源程序experiment4-3.cpp及其运行结果,要求源程序格式整齐,并对关键代码进行说明。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)