太原理工大学面向对象程序设计实验指导Word格式文档下载.docx
- 文档编号:16375081
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:20.12KB
太原理工大学面向对象程序设计实验指导Word格式文档下载.docx
《太原理工大学面向对象程序设计实验指导Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《太原理工大学面向对象程序设计实验指导Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
#include<
usingnamespacestd;
3.3在项目中添加C++源文件
程序中至少有一个源文件
1.点击菜单栏的添加新项图标(这个图标通常在从左边数第二个),打开一个添加新项的对话框,在VisualC++选项下选择代码。
2.在右面的模板窗口选择C++文件(.cpp)图标。
在名称位置输入文件的名字,点击添加。
这样就建立了一个空的源文件,这时就可以输入代码了。
3.4输入代码
可以在IDE中输入代码或将别处的代码拷贝过来。
3.5建立一个可执行程序
当你确定已经将程序的源代码输入完成后,选择生成菜单项,接着选择生成解决方案;
或者点击IDE中的三角形图标。
这时编译程序开始编译并链接你的程序。
成功完成后,在输出窗口会出现以下信息:
==========生成:
1已成功,0已失败,0最新,0已跳过==========
否则会出现一些错误提示信息,按照这些信息改正错误后重新进行编译。
程序没有错误之后,按照3.6给出的步骤执行程序。
如果点击三角图错,当程序没有错误时会自动执行。
3.6执行程序
当排除了所有错误之后,点击调试菜单下的开始执行(不调试),执行程序
3.7保存程序
在文件菜单下面,点击全部保存。
如果忘记这项操作,在退出编程环境前,IDE会提醒你进行这项操作
4.使用经验
每个编程环境看起来都有许多特性和选项。
刚开始学习时不要把精力放在这些特性上,否则就会失去重点。
如果遇到问题,最简单的办法就是放弃已经建立的工程,重新开始一个新的工程或者求助于老师或有经验的同学。
在编程的过程中逐淅学习编程环境的特性。
实验一C++简单程序设计(2学时)
一、实验目的
(1)学习编写简单的C++程序;
(2)学习运算符与表达式的应用;
(3)练习使用简单的输入输出;
(4)学习使用VISUALC++开发环境;
二、实验任务
(1)do-while语句编程,求自然数1-10的和;
并用for语句改写此程序。
画出该程序的流程图。
(2)编程计算图形的面积。
程序可计算圆形、长方形、正方形的面积,运行时先提求用户选择图形的类型,然后,再要求用户对圆形输入半径值,对长方形输入长与宽,对正方形输入边长,计算出面积的值后,在屏幕上显示出来。
三、实验步骤
(1)分析:
sum=1+2+3+4+5+6+7+8+9+10;
sum=55;
#include"
iostream"
intmain()
{
intsum=0;
inti=0;
do{i++;
sum+=i;
}while(i<
10);
cout<
<
"
sum="
sum<
endl;
getchar();
//保持窗口不关闭
return0;
}
for循环实现:
for(i=0;
i<
=10;
i++)
{sum+=i;
cout<
(2)分析:
c_area=r*r*pi;
r_area=len*wid;
s_area=len*len;
程序:
constdoublepi=3.14;
Inputshape"
ifcircle,inputc,ifrectangleinputr;
ifsquareinputs"
charshape;
cin>
>
shape;
switch(shape)
{case'
c'
:
doubler;
cout<
inputradius"
cin>
r;
circlearea="
r*r*pi<
break;
case'
r'
doublelen,wid;
cout<
inputlengthandwidth"
len>
wid;
recarea="
wid*len<
case'
s'
inputlength"
cin>
len;
squareare="
len*len<
default:
inputerror!
keep_window_open();
四、运行结果
输入:
r=2;
c_area=12.56
len=3.5;
wid=5;
r_area=17.5
len=3.5;
s_area=12.25
实验二类与对象程序设计(2学时)
(1)掌握类的定义和使用、成员函数的定义和使用;
(2)掌握类的私有成员、公有成员和保护成员的区别;
(3)掌握对象的定义、类成员的访问;
(4)掌握类中构造函数与析构函数的应用。
(5)掌握重载函数的定义和使用。
(1)设计圆类、矩形类、正方形类,每个类都有函数成员计算对象的面积。
仿照已经定义好的圆类,定义一个矩形类,具有数据成员长和宽,具有构造函数实现对其赋值,具有成员函数area();
定义一个正方形类,具有数据成员长度,具有构造函数实现对其赋值,具有成员函数area().在主程序中根据输入的形状要求,分别构造相应的形状对象并输出其面积。
将代码写在相应的注释处。
(2)编写重载函数MAX1可分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值。
(1)
classCircle{
public:
doublearea(){returnx*x*pi;
Circle(doublea):
x(a){}
private:
doublex;
};
{doubler;
Circler1(r);
r1.area()<
break;
}
default:
(2)
intmax1(intx,inty)
{if(x>
y)returnx;
elsereturny;
doublemax1(doublea,doubleb)
{if(a>
b)returna;
elsereturnb;
intx,y;
doublea,b;
input2integers"
x>
y;
max1(x,y)<
input2doubles"
a>
b;
max1(a,b)<
keep_window_open();
实验三继承与派生(2学时)
(1)掌握类的继承和派生过程;
(2)掌握派生类的定义与使用;
(3)掌握派生类的构造函数与析构函数的应用及调用顺序;
(4)学习使用VISUALC++调试类的继承关系的应用。
(1)声明一个基类BaseClass,有整数类型成员变量Number,构造其派生类DerivedClass,实现其构造函数和析构函数,完善类的功能与结构。
(2)声明一个基类SHAPE,在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象的面积。
使用Rectangle类创建一个派生类Square;
完善类的功能与结构。
三、实验代码
(1)#include"
classBaseClass{
public:
BaseClass(inta):
number(a){
cout<
Baseconstructing"
}
~BaseClass(){cout<
Basedestructing"
intgetNumber(){returnnumber;
private:
intnumber;
};
classDerivedClass:
publicBaseClass{
public:
DerivedClass(inta):
BaseClass(a){
Derivedconstructing"
}
~DerivedClass(){cout<
Deriveddestructing"
intx;
x;
DerivedClassd1(x);
d1.getNumber()<
getchar();
return0;
}
要求:
派生类增加一个整型数据成员,一个成员函数读出这个数据成员,主函数中构造一个派生类对象并输出这两个数据成员。
(2)
classShape{
public:
virtualdoublearea()=0;
virtualdoubleperim()=0;
classPoint:
publicShape{
Point(inta,intb):
x(a),y(b){cout<
constructingpoint\n"
;
~Point(){}
intgetx(){returnx;
intgety(){returny;
classRectangle:
publicPoint{
Rectangle(Pointpr,intx,inty):
Point(pr),len(x),wid(y){
cout<
constructingrectangle\n"
~Rectangle(){cout<
destructingrectangle\n"
intget_len(){returnlen;
intget_wid(){returnwid;
doublearea(){returnlen*wid;
intlen;
intwid;
classCircle:
Circle(Pointpc,intx):
Point(pc),r(x){
constructingcircle\n"
~Circle(){cout<
destructingCircle\n"
doublearea(){returnr*r*3.14;
intr;
classSquare:
publicRectangle{
Square(Pointps,intx):
Rectangle(ps,x,x){}
~Square(){cout<
destructingShape\n"
voidmain(){
intx,y,len,wid,rad;
y>
Pointp1(x,y);
Rectangler1(p1,len,wid);
rad;
Pointp2(x,y);
Circlec1(p2,rad);
c1.area()<
Pointp3(x,y);
Squares1(p3,len);
s1.area()<
增加适当的输入提示语句,提示用户输入相关的信息。
对类Rectangle,Circle增加计算周长的函数GetPerim(),
在主函数中增加所构造的形状的周长的输出语句。
(1)输入:
输出:
(2)输入:
实验四多态性(2学时)
(1)掌握抽象类的定义与使用;
(2)掌握虚函数的定义与使用;
(3)掌握虚函数实现动态多态性;
(4)学习使用虚基类解决二义性;
(1)已知一个抽象类SHAPE,具有虚函数GetArea()计算面积,GetPerim()计算周长。
在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象的面积,GetPerim()计算周长。
编写一个函数output_area(),该函数中输出图形的面积,函数的参数分别是基类的对象或基类的引用,主函数中定义一个矩形,一个圆,一个正方形。
调用该函数输出面积。
写出两次执行的结果,分析原因。
classPoint{
x(a),y(b){}
Shape(Pointp):
p1(p){}
virtualdoublearea()=0;
Pointp1;
publicShape{
Shape(pr),len(x),wid(y){}
Shape(pc),r(x){}
(2)声明一个车(Vehicle)基类,有Run、Stop、Repair等成员函数,由此派生出自行车(Bicycle)类、汽车(Motorcar)类,从(Bicycle)和(Motorcar)派生出摩托车(Motorcycle)类,它们都有Run、Stop等成员函数。
将主函数中的语句:
mc1.Bicycle:
repair();
改为:
mc1.repair();
为避免二义性,将Bicycle,Motorcar改为由虚基类Vehicle派生来,即:
classBicycle:
virtualpublicVehicle
classMotorcar:
重新运行上述程序,写出运行结果,分析原因。
classVehicle{
Vehicle(){cout<
constructingVehicle"
~Vehicle(){cout<
destructingVehicle"
voidrun(){cout<
vehiclerun"
voidstop(){cout<
vehiclestop"
voidrepair(){cout<
vehiclerepair"
classBicycle:
publicVehicle{
Bicycle(){cout<
constructingBicycle"
~Bicycle(){cout<
destructingBicycle"
voidrun(){cout<
Bicyclerun"
voidstop(){cout<
Bicyclestop"
Motorcar(){cout<
constructingMotorcar"
~Motorcar(){cout<
destructingMotorcar"
Motorcarrun"
Motorcarstop"
classMotorcycle:
publicBicycle,publicMotorcar{
Motorcycle(){cout<
constructingMotorcycler"
~Motorcycle(){cout<
destructingMotorcycle"
Motorcyclerun"
Motorcyclestop"
Motorcyclemc1;
mc1.run();
mc1.stop();
mc1.Bicycle:
四、运行结果及分析
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 太原 理工大学 面向 对象 程序设计 实验 指导