面向对象程序设计.docx
- 文档编号:24786967
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:16
- 大小:20.06KB
面向对象程序设计.docx
《面向对象程序设计.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计.docx(16页珍藏版)》请在冰豆网上搜索。
面向对象程序设计
《面向对象程序设计》实验指导书
实验类别:
设计实验课程名称:
面向对象程序设计方法学
实验室名称:
软件基础实验室实验课程编号:
总学时:
56学分:
3.5
适用专业:
计算机科学与技术、网络工程、物联网
先修课程:
有一门程序设计语言基础
实验在教案培养计划中地位、作用:
面向对象程序设计方法学是一门实践性很强的课程,每个学生必须完成一定数量的上机实验。
实验课是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教案环节。
本课程使学生熟悉C++的语法特性,了解C与C++的区别和兼容性;理解面向对象程序设计的基本原理,包括类、对象、抽象、封装、继承和多态性等关键要素以及其关键语法特性—类;掌握用C++编写面向对象程序的一般方法;了解VC++编程环境。
通过上机实验进一步加深对课程基本内容的理解。
同时,在程序设计方法及上机操作等基本技能和科学作风方面受到比较系统的、严格的训练。
实验一语句与程序流程(2学时)
1、实验目的
(1)了解C++开发工具的特点
(2)熟悉C++开发环境
(3)学会编写简单的C++程序。
(4)练习使用简单的输入输出。
(5)熟悉各种流程控制语句的功能。
2、实验内容
(1)输入并运行程序:
用do-while语句编程,求自然数1~10之和。
程序正确运行之后,去掉源程序中的#include语句,重新编译,观察会有什么问题。
(2)do-while语句用for语句代替,完成相同的功能。
(3)编程计算图形的面积。
程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积后将其显示出来。
3、实验要求
(1)注意自始至终贯彻课程中所介绍程序设计风格,养成良好的编程习惯。
(2)独立完成所布置习题。
(3)为保证尽量在统一安排的上机时间内编译运行通过程序,应事先设计好程序。
(4)认真完成每次实验,并写出实验报告。
4、实验步骤
(1)启动VisualC++开发环境
(2)创建一个工程
1)单击File菜单中的New选项,显示新建对话框
2)选择Win32ConsoleApplication(VC++)。
3)选择工程所在路径及输入工程的名称lab1_1
4)依次按‘下一步’直至完成为止。
(3)至此,已经建立好工程相关的文件,在生成的main函数中写入必要的内容即可。
(4)输入并运行程序:
用do-while语句编程,求自然数1~10之和
1)建立C++源程序文件
●选菜单命令Project|AddtoProject|New,弹出New对话框
●在New对话框的Files选项卡中选择C++SourceFile,并填入文件名称lab1_1,单击OK按钮,完成新建C++源程序文件
2)编辑C++源程序文件
●在文件编辑窗口中输入代码
●完成后,选择菜单File|Save保存这个文件
3)建立并运行可执行程序
●选择菜单命令Build,建立可执行程序
如果你正确输入了源程序,此时便成功地生成了可执行程序。
如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源程序进行修改后,重新选择菜单命令Build建立可执行程序。
●选择菜单命令Run,运行程序,观察屏幕显示内容。
(5)程序正确运行之后,在源程序第一行”#include
(6)选择菜单命令File|ColseWorkSpace关闭工作空间,另建立一个工程lab1_2,包含一个C++源程序lab1_2.cpp,将do-while语句用for语句代替,完成与实验内容1相同的功能。
(7)选择菜单命令File|ColseWorkSpace关闭工作空间,建立工程lab1_3,包含一个C++源程序lab1_3.cpp,计算图形面积。
圆形的面积计算公式为S=PI*r*r,长方形的面积计算公式为S=a*b,正方形的面积市场计算公式为S=a*a。
程序中定义一个整型变量iType表示图形的类型,用cout语句输出提示信息让用户选择图形的型,用cin读入iType的值,然后,使用switch语句判断图形的类型,分别提示用户输入需要的参数值,计算出面积的值后用cout语句显示出来。
最后编译运行程序。
参考程序如下:
//lab3_3.cpp
#include
usingnamespacestd。
constfloatPI=3.1416。
intmain()
{
intiType。
floatradius,a,b,area。
cout<<”图形的类型?
(1为圆形,2为长方形,3为正方形):
”;
cin>>iType。
switch(iType)
{
case1:
cout<<“圆的半径为:
”。
cin>>radius。
area=PI*radius*radius。
cout<<”面积为”<
break。
case2:
cout<<”矩形的长为:
”。
cin>>a。
cout<<”矩形的宽为:
”。
cin>>b。
area=a*b。
cout<<”面积为:
”<
break。
case3:
cout<<”正方形的边长为:
”。
cin>>a。
area=a*a。
cout<<”面积为:
”<
break。
default:
cout<<”不是合法的输入值!
”< } return0。 } 实验二函数与重载(2学时) 1、实验目的 (1)掌握函数的定义和调用方法。 (2)练习重载函数使用。 (3)练习缺省参数的函数使用 (4)练习使用系统函数。 2、实验内容: (1)编写一个函数把华氏温度转换为摄氏温度,转换公式为: C=(F-32)*5/9。 (2)编写重载函数max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。 (3)给求取两个整数最大值的重载函数max1赋缺省参数值0,并利用该函数来判断某个整数是否大于0,比如max1(-6)。 (4)使用系统函数pow(x,y)计算x^y的值,注意包含头文件cmath。 3、实验要求 (1)注意自始至终贯彻课程中所介绍程序设计风格,养成良好的编程习惯。 (2)独立完成所布置习题。 (3)为保证尽量在统一安排的上机时间内编译运行通过程序,应事先设计好程序。 (4)认真完成每次实验,并写出实验报告。 4、实验步骤: (1)编写函数floatConvert(floatTempFer),参数的返回值都为float类型,实现算法C=(F-32)*5/9,在main()函数中实现输入、输出。 程序名为lab2_1.cpp. (2)分别编写四个同名函数max1,实现函数重载,在main()函数中测试函数功能。 程序名: lab2_2.cpp。 参考程序如下: #include usingnamespacestd。 intmax1(inta=0,intb=0) { returna>b? a: b。 } intmax1(inta,intb,intc) { inttmp=max1(a,b)。 returntmp>c? tmp: c。 } doublemax1(doublea,doubleb) { returna>b? a: b。 } doublemax1(doublea,doubleb,doublec) { doubletmp=max1(a,b)。 returntmp>c? tmp: c。 } intmain() { intn1,n2,n3。 cout<<"请输1个整数: "。 cin>>n1。 if(max1(n1)==0) cout<<"这个数小于或等于0"。 else cout<<"这个数大于0"。 cout<<"请输2个整数: "。 cin>>n1>>n2。 cout<<"最大值为"< cout<<"请输3个整数: "。 cin>>n1>>n2>>n3。 cout<<"最大值为"< doubled1,d2,d3。 cout<<"请输2个实数: "。 cin>>d1>>d2。 cout<<"最大值为"< cout<<"请输3个实数: "。 cin>>d1>>d2>>d3。 cout<<"最大值为"< return0。 } (3)若将三个整数的函数给定缺省参数值0,重新编译,观察编译的结果。 (4)在main()函数中提示输入两个整数x,y,使用cin语句得到x,y的值,调用pow(x,y)函数计算x的y次幂的结果,再显示出来。 程序名: lab2_2.cpp。 实验三类的定义与使用(2学时) 1、实验目的 (1)掌握类的定义和使用 (2)掌握类的定义和对象的声明 (3)观察构造函数和析构函数的执行过程。 (4)观察具有不同访问属性的成员的访问方式。 2、实验内容 (1)定义一个TDate类,包含年(year)、月(month)、日(day)等属性,有三个公有成员函数: SetDate来设置日期、AddOneDay来对日期进行加1天的操作、print来输出日期; (2)对构造函数或成员函数进行重载; (3)设置构造函数或成员函数的缺省参数 (4)观察构造函数和析构函数的调用顺序; (5)观察具有不同访问属性的成员的访问方式。 3、实验要求 (1)注意自始至终贯彻课程中所介绍程序设计风格,养成良好的编程习惯。 (2)独立完成所布置习题。 (3)为保证尽量在统一安排的上机时间内编译运行通过程序,应事先设计好程序。 (4)认真完成每次实验,并写出实验报告。 4、实验步骤 (1)添加一个头文件TDate.h来定义TDate类。 包含: 1)私有数据成员: 年(year)、月(month)、日(day)等; 2)定义2个构造函数,并对其中的一个构造函数设置缺省参数; 3)定义1个析构函数。 4)定义成员函数SetDate来设置日期,AddOneDay来对日期进行加1天的操作,print来输出日期。 (2)添加一个源文件TDate.cpp来实现成员函数。 (3)在主程序中定义若干个TDate类的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。 写在另外一个cpp文件中。 (4)将成员函数print的访问属性设为private或protected后,重新编译,观察编译结果。 //======日期类定义部分TDate.h======// #include usingnamespacestd。 #ifndefTDate_H #defineTDate_H classTDate { public: TDate() { year=2018。 month=1。 day=1。 cout<<"调用缺省的构造函数"< } TDate(inty,intm=1,intd=1) { year=y。 month=m。 day=d。 cout<<"调用带参数的构造函数"< }。 voidSetDate(inty,intm,intd)。 voidAddOneDay()。 voidprint()。 ~TDate(){cout<<"调用析构函数"< } private: intyear。 intmonth。 intday。 }。 #endif //======日期类实现部分TDate.cpp======// #include"TDate.h" intmaxDays(int,int)。 voidTDate: : print() {cout< } voidTDate: : SetDate(inty,intm,intd) {year=y。 month=m。 day=d。 } voidTDate: : AddOneDay() { day=day+1。 if(day>maxDays(year,month)) {month=month+1。 day=1。 } if(month>12) {year=year+1。 month=1。 } } intmaxDays(inty,intm) { intdays。 switch(m) { case1: case3: case5: case7: case8: case10: case12: days=31。 //31天 break。 case2: if((y%4==0&&y%100! =0)||y%400==0)//闰年29天 days=29。 else days=28。 break。 //} default: //30天 days=30。 break。 } returndays。 }。 //======主函数部分Lab3.cpp======// intmain() { TDated0。 cout<<"不带参数的日期对象: "。 d0.print()。 TDated1(2003)。 cout<<"带1个参数的日期对象: "。 d1.print()。 TDated2(2003,12)。 cout<<"带2个参数的日期对象: "。 d2.print()。 TDated3(2018,10,14)。 d3.AddOneDay()。 cout<<"带3个参数的日期对象加一天后: "。 d3.print()。 d3.SetDate(2005,4,8)。 cout<<"重新设定日期后: "。 d3.print()。 return0。 } 实验四静态成员与常成员的使用(2学时) 1、实验目的 (1)学习静态成员的使用 (2)学习常成员的使用 (3)掌握静态数据成员与常数据成员的初始化 2、实验内容 (1)某商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,因此,商店需要记录下目前库存的货物的总重量,现在要求设计一个Goods类并使用静态成员来模拟商店货物购进和卖出的情况; (2)为上面的Goods类添加一个常数据成员(货物名称),并对货物名称进行初始化; (3)将前面已定义的某些成员函数改写为常成员函数,观察是否该类中所有的成员函数是否都可设定为常成员函数。 3、实验要求 (1)注意自始至终贯彻课程中所介绍程序设计风格,养成良好的编程习惯。 (2)独立完成所布置习题。 (3)为保证尽量在统一安排的上机时间内编译运行通过程序,应事先设计好程序。 (4)认真完成每次实验,并写出实验报告。 4、实验步骤 (1)添加一个头文件Goods.h来定义Goods类。 包含: 1)私有数据成员货物重量(weight)、私有静态数据成员库存总重量(totalWeight); 2)定义构造函数来描述进货过程; 3)定义成员函数Sell来描述货物卖出过程,成员函数GetWeight来获取当前货物重量。 4)定义静态成员函数GetTotalWeight来读取当前货物的库存总重量。 5)自定义若干个成员函数。 (2)添加一个源文件Goods.cpp来实现成员函数。 (3)在主程序中定义若干个Goods类的对象,模拟进货与卖出的过程。 查看运行结果。 (4)为Goods类添加一个常数据成员constchar*name来表示货物名称,改写构造函数及主程序的调用,在构造函数的成员初始化列表中对货物名称赋初值。 重新编译,观察运行结果。 (5)将前面已定义的某些成员函数改写为常成员函数,观察是否该类中所有的成员函数是否都可设定为常成员函数。 参考程序如下: #include classGoods { public: Goods(intw)。 intGetWeight()const。 voidSell()。 staticintGetTotalWeight()。 private: intweight。 staticinttotalWeight。 public: constchar*name。 }。 Goods: : Goods(intw): name("鸡蛋") { weight=w。 totalWeight+=w。 } voidGoods: : Sell() { totalWeight-=weight。 weight=0。 } intGoods: : GetWeight()const { returnweight。 } intGoods: : GetTotalWeight() { returntotalWeight。 } intGoods: : totalWeight=0。 intmain() { intw。 cout<<"购进第1箱货物重量为: "。 cin>>w。 Goodsg1(w)。 cout<<"购进第2箱货物重量为: "。 cin>>w。 Goodsg2(w)。 cout<<"库存货物重量为: "。 cout< : GetTotalWeight()< g2.Sell()。 cout<<"卖掉第2箱货物后,库存货物重量为: "。 cout< cout<<"货物名称为: "< return0。 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计