太原理工大学面向对象程序设计实验指导.docx
- 文档编号:3469673
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:20.12KB
太原理工大学面向对象程序设计实验指导.docx
《太原理工大学面向对象程序设计实验指导.docx》由会员分享,可在线阅读,更多相关《太原理工大学面向对象程序设计实验指导.docx(14页珍藏版)》请在冰豆网上搜索。
太原理工大学面向对象程序设计实验指导
面向对象程序设计基础
实验指导
计算机与软件学院
2014年4月
如何使用VC编程环境:
1.如何运行一个程序
建立一个目录,如cpp,将以后建立的所有程序都放在E:
\cpp这个目录中,便于查找。
2.安装VisualStudio
VisualStudio是一个Windows下交互式的开发环境(IDE).可以从网上下载一个试用版,这里的使用说明以VC2005为例,其它的版本大致一样。
3.创建并运行一个程序。
先运行一个简单的程序,如”helloworld”,看一下安装的VC是否能正确运行。
当程序遇到错误时,要主动寻求帮助。
当帮助别人时,要告诉好如何解决这个问题,而不是具体帮助他操作一下。
3.1创建一个新的项目
在VC中,项目是指一些文件的集合,这些文件有些是系统自动生成的,是在Windows环境下创建或运行一个程序所需要的。
可按以下步骤创建一个新项目:
1.打开编程环境
2.选择文件菜单,选择新建,项目
3.选择项目类型VisualC++
4.在模板选项,选择Win32控制台应用程序
5.在名字对话框输入项目的名称,如:
Hello
6.选择你创建好的目录来存放你的项目;例如:
E:
\cpp
7.点击完成
8.这时出现了Win32应用程序向导。
9.选择对话框左面的应用程序设置。
10.在附加选项中选择空项目
11.点击完成。
这时编程环境设置成你的项目需要的模式。
3.2使用
#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"
usingnamespacestd;
intmain()
{
intsum=0;
inti=0;
do{i++;
sum+=i;
}while(i<10);
cout<<"sum="< getchar();//保持窗口不关闭 return0; } for循环实现: for(i=0;i<=10;i++) {sum+=i; } cout<<"sum="< (2)分析: c_area=r*r*pi; r_area=len*wid; s_area=len*len; 程序: #include"iostream" usingnamespacestd; constdoublepi=3.14; intmain() { cout<<"Inputshape"< cout<<"ifcircle,inputc,ifrectangleinputr;ifsquareinputs"< charshape; cin>>shape; switch(shape) {case'c': doubler; cout<<"inputradius"< cin>>r; cout<<"circlearea="< break; case'r': doublelen,wid; cout<<"inputlengthandwidth"< cin>>len>>wid; cout<<"recarea="< break; case's': cout<<"inputlength"< cin>>len; cout<<"squareare="< break; default: cout<<"inputerror! "< break; } keep_window_open(); return0; } 四、运行结果 输入: 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) #include"iostream" usingnamespacestd; constdoublepi=3.14; classCircle{ public: doublearea(){returnx*x*pi;} Circle(doublea): x(a){} private: doublex; }; intmain() { cout<<"Inputshape"< cout<<"ifcircle,inputc,ifrectangleinputr;ifsquareinputs"< charshape; cin>>shape; switch(shape) {case'c': {doubler; cout<<"inputradius"< cin>>r; Circler1(r); cout<<"circlearea="< break; } default: cout<<"inputerror! "< break; } keep_window_open(); return0; } (2) #include"iostream" usingnamespacestd; intmax1(intx,inty) {if(x>y)returnx; elsereturny; } doublemax1(doublea,doubleb) {if(a>b)returna; elsereturnb; } intmain() { intx,y; doublea,b; cout<<"input2integers"< cin>>x>>y; cout< cout<<"input2doubles"< cin>>a>>b; cout< keep_window_open(); return0; } 四、运行结果 实验三继承与派生(2学时) 一、实验目的 (1)掌握类的继承和派生过程; (2)掌握派生类的定义与使用; (3)掌握派生类的构造函数与析构函数的应用及调用顺序; (4)学习使用VISUALC++调试类的继承关系的应用。 二、实验任务 (1)声明一个基类BaseClass,有整数类型成员变量Number,构造其派生类DerivedClass,实现其构造函数和析构函数,完善类的功能与结构。 (2)声明一个基类SHAPE,在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象的面积。 使用Rectangle类创建一个派生类Square;完善类的功能与结构。 三、实验代码 (1)#include"iostream" usingnamespacestd; classBaseClass{ public: BaseClass(inta): number(a){ cout<<"Baseconstructing"< } ~BaseClass(){cout<<"Basedestructing"< intgetNumber(){returnnumber;} private: intnumber; }; classDerivedClass: publicBaseClass{ public: DerivedClass(inta): BaseClass(a){ cout<<"Derivedconstructing"< } ~DerivedClass(){cout<<"Deriveddestructing"< } }; intmain() { intx; cin>>x; DerivedClassd1(x); cout< getchar(); return0; } 要求: 派生类增加一个整型数据成员,一个成员函数读出这个数据成员,主函数中构造一个派生类对象并输出这两个数据成员。 (2) #include"iostream" usingnamespacestd; classShape{ public: virtualdoublearea()=0; virtualdoubleperim()=0; }; classPoint: publicShape{ public: Point(inta,intb): x(a),y(b){cout<<"constructingpoint\n";} ~Point(){} intgetx(){returnx;} intgety(){returny;} private: intx,y; }; classRectangle: publicPoint{ public: 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;} private: intlen; intwid; }; classCircle: publicPoint{ public: Circle(Pointpc,intx): Point(pc),r(x){ cout<<"constructingcircle\n";} ~Circle(){cout<<"destructingCircle\n";} doublearea(){returnr*r*3.14;} private: intr; }; classSquare: publicRectangle{ public: Square(Pointps,intx): Rectangle(ps,x,x){} ~Square(){cout<<"destructingShape\n";} }; voidmain(){ intx,y,len,wid,rad; cin>>x>>y>>len>>wid; Pointp1(x,y); Rectangler1(p1,len,wid); cout< cin>>x>>y>>rad; Pointp2(x,y); Circlec1(p2,rad); cout< cin>>x>>y>>len; Pointp3(x,y); Squares1(p3,len); cout< getchar(); getchar(); } 要求: 增加适当的输入提示语句,提示用户输入相关的信息。 对类Rectangle,Circle增加计算周长的函数GetPerim(), 在主函数中增加所构造的形状的周长的输出语句。 四、运行结果 (1)输入: 输出: (2)输入: 实验四多态性(2学时) 一、实验目的 (1)掌握抽象类的定义与使用; (2)掌握虚函数的定义与使用; (3)掌握虚函数实现动态多态性; (4)学习使用虚基类解决二义性; 二、实验任务 (1)已知一个抽象类SHAPE,具有虚函数GetArea()计算面积,GetPerim()计算周长。 在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象的面积,GetPerim()计算周长。 要求: 编写一个函数output_area(),该函数中输出图形的面积,函数的参数分别是基类的对象或基类的引用,主函数中定义一个矩形,一个圆,一个正方形。 调用该函数输出面积。 写出两次执行的结果,分析原因。 三、实验步骤 (1) #include"iostream" usingnamespacestd; classPoint{ public: Point(inta,intb): x(a),y(b){} intgetx(){returnx;} intgety(){returny;} private: intx,y; }; classShape{ public: Shape(Pointp): p1(p){} virtualdoublearea()=0; private: Pointp1; }; classRectangle: publicShape{ public: Rectangle(Pointpr,intx,inty): Shape(pr),len(x),wid(y){} intget_len(){returnlen;} intget_wid(){returnwid;} doublearea(){returnlen*wid;} private: intlen; intwid; }; classCircle: publicShape{ public: Circle(Pointpc,intx): Shape(pc),r(x){} doublearea(){returnr*r*3.14;} private: intr; }; classSquare: publicRectangle{ public: Square(Pointps,intx): Rectangle(ps,x,x){} }; (2)声明一个车(Vehicle)基类,有Run、Stop、Repair等成员函数,由此派生出自行车(Bicycle)类、汽车(Motorcar)类,从(Bicycle)和(Motorcar)派生出摩托车(Motorcycle)类,它们都有Run、Stop等成员函数。 要求: 将主函数中的语句: mc1.Bicycle: : repair(); 改为: mc1.repair();为避免二义性,将Bicycle,Motorcar改为由虚基类Vehicle派生来,即: classBicycle: virtualpublicVehicle classMotorcar: virtualpublicVehicle 重新运行上述程序,写出运行结果,分析原因。 #include"iostream" usingnamespacestd; classVehicle{ public: Vehicle(){cout<<"constructingVehicle"< ~Vehicle(){cout<<"destructingVehicle"< voidrun(){cout<<"vehiclerun"< voidstop(){cout<<"vehiclestop"< voidrepair(){cout<<"vehiclerepair"< }; classBicycle: publicVehicle{ public: Bicycle(){cout<<"constructingBicycle"< ~Bicycle(){cout<<"destructingBicycle"< voidrun(){cout<<"Bicyclerun"< voidstop(){cout<<"Bicyclestop"< }; classMotorcar: publicVehicle{ public: Motorcar(){cout<<"constructingMotorcar"< ~Motorcar(){cout<<"destructingMotorcar"< voidrun(){cout<<"Motorcarrun"< voidstop(){cout<<"Motorcarstop"< }; classMotorcycle: publicBicycle,publicMotorcar{ public: Motorcycle(){cout<<"constructingMotorcycler"< ~Motorcycle(){cout<<"destructingMotorcycle"< voidrun(){cout<<"Motorcyclerun"< voidstop(){cout<<"Motorcyclestop"< }; intmain() { Motorcyclemc1; mc1.run(); mc1.stop(); mc1.Bicycle: : repair(); getchar(); return0; } 四、运行结果及分析
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 太原 理工大学 面向 对象 程序设计 实验 指导