《面向对象程序设计》实验指导书

上传人:xins****2008 文档编号:110346203 上传时间:2022-06-18 格式:DOC 页数:19 大小:72.50KB
收藏 版权申诉 举报 下载
《面向对象程序设计》实验指导书_第1页
第1页 / 共19页
《面向对象程序设计》实验指导书_第2页
第2页 / 共19页
《面向对象程序设计》实验指导书_第3页
第3页 / 共19页
资源描述:

《《面向对象程序设计》实验指导书》由会员分享,可在线阅读,更多相关《《面向对象程序设计》实验指导书(19页珍藏版)》请在装配图网上搜索。

1、面向对象程序设计实验指导书第一部分 实验教学大纲课程名称:面向对象程序设计实验12-16周,16周提交实验报告,24学时。本课件共给出5个实验,在做完要求的5个实验外,要求每个同学自己增加一道课堂教学中要求完成的作业题,编写程序,并能调试通过,得到正确结果。一、课程简介及基本要求面向对象的程序设计是一门实践性很强的课程,每个学生必须完成一定数量的上机作业。通过上机作业进一步加深对课程基本内容的理解。同时,在程序设计方法及上机操作等基本技能和科学作风方面受到比较系统的、严格的训练。由于学生编程和上机的熟悉程度往往差别较大,本大纲所要求的实验为每个学生必须完成的实验,即最低要求。其它上机内容由学生

2、在教师指导下自选,内容可以是习题中编写的程序,也可以是学生解决实际问题中所编写的程序。二、实验课程目的与要求实验课是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。本课程使学生熟悉C+的语法特性,了解C与C+的区别和兼容性;理解面向对象程序设计的基本原理,包括类、对象、抽象、封装、继承和多态性等关键要素以及其关键语法特性类;掌握用C+编写面向对象程序的一般方法;了解VC+编程环境。三、主要仪器设备 每人一台计算机,基本配置:奔腾III600MHZ以上、40G60G 硬盘,128M内存。装有C+builder 或Visual C+或其他的C+编译软件。四、实验

3、方式与基本要求实验分两类:基本实验和综合性实验。基本实验是按章节进行,根据教学大纲要求,有针对性地练习。综合性实验往往跨单元处理问题。学生上机时,按要求填写实验报告和回答思考题。要求把每次实验的程序文本和运行结果存入到本人的用户目录下或专用软盘上供指导老师检查。五考核与报告本课程实验考试方式是考查,按一般课程考试方式进行,主要内容包括实验操作和实验报告,实验成绩占该课程形成性考核成绩的1020%。实验报告的规范:实验完成后填写统一的实验报告单,给出实验内容题目、年级、姓名、学号、指导教师、完成日期,并详细填写:实验目的、实验程序、实验结果及分析、存在的问题。实验一、C+开发环境应用(4学时)1

4、、实验目的(1)了解C+开发工具的特点(2)熟悉C+开发环境(2)学习用C+编写标准的C+程序2、实验任务使用C+来建立一个非图形化的标准C+程序,编译、运行下例程序: #include void main(void) cout”Hello!n”; cout”Welcome to C+!n”; 3、实验步骤(1)启动Visual C+开发环境(2)创建一个项目a.单击File菜单中的New选项,显示示新建对话框b.选择Win32 Console Application(VC+)。c.选择项目所在路径及输入项目的名称d.依次按下一步直至完成为止。(3)至此,已经建立好工程相关的文件,在生成的ma

5、in函数中写入必要的内容即可。(4)继续下面的步骤:a.建立C+源程序文件l 选菜单命令Project|Add to Project|New,弹出New对话框l 在New对话框的Files选项卡中选择C+ Source File,并填入文件名称,单击OK按钮,完成新建C+源程序文件b.编辑C+源程序文件l 在文件编辑窗口中输入代码l 完成后,选择菜单File|Save保存这个文件c.建立并运行可执行程序l 选择菜单命令Build,建立可执行程序如果你正确输入了源程序,此时便成功地生成了可执行程序。如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源程序进行修改后,重新

6、选择菜单命令Build建立可执行程序。选择菜单命令Run,运行程序,观察屏幕显示内容。d.关闭工作空间选择菜单命令File|Colse WorkSpace关闭工作空间。1. 熟悉Visual C+实验环境实验步骤(1) 启动Developer Studio,看看初始化界面由哪些部分组成(2) 查看各菜单项,看看都有哪些子菜单和命令(3) 将鼠标放置于各工具条图标上,系统会自动显示该图标代表的命令含义,了解一下都有哪些命令。 (4) 在任意工具条上单击鼠标右键,弹出式菜单上将显示所有可用的工具条,选择其中没有对号()的项,看看有什么效果,再选择有对号的项,又有什么效果?(5) 将鼠标移动到任意工

7、具条上,将鼠标放到图标间隙,按下鼠标左键不放,移动鼠标到屏幕中间,有什么现象发生?再将它拖回到原来位置,有什么现象发生? (6) 将鼠标移动到左边的工作区窗口,按下鼠标左键不放,移动鼠标到屏幕中间,有什么现象发生?再将它拖回到原来位置,有什么现象发生?7) 将鼠标移动到下边的输出窗口,按鼠标右键,弹出一个菜单,选择其中的菜单项Hide,结果如何?要重新显示该窗口,选择菜单View|Output,窗口是不是又显示出来了? (8) 学习使用帮助系统。如果你用的是Visual C+5.0,则在工作区窗口的InfoView中选择你感兴趣的内容,双击它,在文档区显示具体的帮助信息。如果你用的是Visua

8、l C+6.0,选择菜单Help|Contents,启动MSDN联机帮助系统,学习使用该帮助系统。联机帮助系统是一个相对独立的程序,它和Developer Studio是两个程序,但是它的启动和停止都受Developer Studio影响。MSDN联机帮助系统运行的前提条件是Developer Studio在运行。 (9) 选File|Exit退出Developer Studio。2. 控制台应用用AppWizard建立一个控制台应用,在终端上输出Hello。术语:“控制台应用程序”是一个在DOS窗口中运行的基于字符的程序。由于这种模式的应用程序比Windows程序简单,我们先选择利用Visu

9、al C+来建立这样一个应用,这样使得我们可以将精力先投入到学习使用C+编程语言,而不需要把过多的精力投入到学习复杂的Windows编程中去。实验步骤1) 创建第一个应用首先创建一个项目(project),项目将代表你的应用,存放你应用的所有信息,包括源文件、资源文件、编译连接设置等。创建项目的步骤为:(1) 启动Developer Studio(2) 从主菜单中选择File|New,将显示出New对话框(3) 选择Projects标签,并从列表中单击Win32 Console Application(4) 在“Location”编辑框中输入你的工作目录名称,如c:studentyour_na

10、me(自建吧)(5) 在对话框的右上角的“project name”编辑框内键入项目的名字,如Hello,系统将自动为你的项目分配一个默认的目录(6) 单击OK继续(7) 如果是VC 6.0,系统将显示一个询问项目类型的程序向导,选择“an empty project”(8) 单击Finish或OK结束配置,创建应用程序这时系统为你创建一个新的项目,并且在左边的工作区窗口中将出现你项目的名字。工作区窗口除原来的InfoView标签外又增加了两个标签(如果是Visual C+6.0,则没有InfoView标签):ClassView和FileView。ClassView从类的角度显示项目中建立的各

11、个类,双击某个类名将会在右边的文档显示区显示类的定义文件并把文件的当前位置定位到所选的类;FileView显示构成项目的各个文件,选择某一文件将会在右边的文档显示区显示文件内容;InfoView是VC5的帮助文件目录,在这里可以选择所要获取帮助的标题,在右边将显示帮助内容。2) 编辑你的第一个C+源程序用下面的方法在你创建的项目中添加一个文件:(1) 在主菜单上选择File|New(2) 在New对话框中选择File标签,单击“C+ Source File”(3) 选中Add to Project复选框(4) 在右边的File name编辑框中为文件指定一个名字,如Hello,系统将自动为你加

12、上后缀.cpp。新的空白文件将自动打开,显示在文档显示区。在文件中输入以下内容(不包括上下两条横线):/hello world example#include int main() cout hello!常用编辑命令虽然许多编辑命令可以通过菜单和工具栏实现,但大量的编辑命令都可以通过键盘实现。以下命令通常用键盘实现:* 撤消前一次操作。当你进行了一次错误的操作时,可以通过敲击键盘上的Ctrl+Z完成;* 重复前一次操作。通过敲击Ctrl+Y实现* 剪切一行。用Ctrl+L来删除一行并将它放到剪切板中* 剪切。将选中的文本删除并将它放到剪切板中,用Ctrl+X实现* 复制。将选中的文本复制到剪切

13、板中,用Ctrl+C实现* 粘贴。将剪切板中的内容放到编辑器中文本的当前位置处(由光标指示)。,用Ctrl+V实现要想了解关于键盘操作命令的完整列表,可以选择Help菜单下的Keyboard Map。你没有必要记住所有的命令,有些根本不常用。3) 保存你的源文件单击工具栏中的save图标,或者选择File|Save来保存你的文件。C+源文件的扩展名为.cpp。扩展名非常重要,Developer Studio根据文件的扩展名来区分文件类型,并且根据文件类型提供相应的编辑帮助(如正确的语法高亮显示)。4) 编译、连接得到可执行程序编辑结束后,仔细检查你输入的内容,看有无错误。确认没有错误之后,选择

14、主菜单的Build|Build Hello.exe来编译你的项目(也可以按功能键F7)。如果你输入的内容没有错误,那么,在屏幕下方的输出窗口将会显示:hello.exe -0 error(s), 0 warning(s)如果在编译时得到错误或警告,是你的源文件出现错误,再次检查你的源文件,看是否有错误,改正它。5) 改正源程序中的错误编译的错误会在Developer Studio的下方的输出窗口显示出来,逐个查看这些错误的内容,用鼠标双击,光标可以自动移动到发生错误的源程序的相应地点,仔细检查你的源程序,改正发生错误的地方,注意是否否遗留了分号、引号或括号等。改正后,再重复步骤4)的操作,直到

15、编译连接通过为止。调试命令有关调试的命令分散在Build、Debug、View和Edit菜单中。Build菜单包含一个Start Debug子菜单,其中的命令是Debug菜单命令的子集,包括:启动调试过程(Go)、单步跟踪( Step Into) 和运行到光标处( Run To Cursor).当启动调试进程后,Build菜单会被Debug菜单代替,Debug菜单包含各种控制程序执行的命令,如单步执行、进入函数体、从函数体中出来、运行到光标所在位置等。View菜单包含一些命令,可以控制显示各种与调试有关的窗口,如变量窗口(Variables window)、调用栈窗口(Call Stack w

16、indow)等。Edit菜单下的Breakpoints命令可以打开一个对话框,在其中可以插入、删除、启动、停止各个断点。设置断点你可以控制程序直接运行到指定地点,然后查看运行到这个地方时程序的状态,如变量的值、调用栈的情况等。你可以通过设置断点来达到这一目的。设置断点的方式是:将光标移到要设置断点的地方,按F9,这时会有一个红的圆点出现在代码行的左边。如果你想取消断点,将光标移动到设置断点的代码行,按F9。启动调试按F5或者在Build菜单中,选择Start Debug然后选择Go,就可以启动调试程序。程序会一直运行到需要用户输入或者有断点的代码处。查看变量值 查看变量值有多种方式,你可以选择

17、你喜欢的方式进行。1) 你可以将鼠标移动到程序的变量名处,系统会自动为你显示变量的值;2)复杂变量(如对象)可以通过QuickWatch查看,方法是:将光标定位到所要查看值的变量处,按鼠标右键,选择QuickWatch菜单,就可以看到变量值。3)启动调试程序后,屏幕下方将会出现两个输出窗口,一个是Watch,另一个是Variable。Watch窗口显示变量名和变量值,你可以在Watch窗口中加上你想观察值的变量名,也可以直接从源代码中选择变量名,并把它拖动到Watch窗口中。Variable窗口显示程序当前运行上下文涉及的变量的值。控制程序执行你可以控制程序单步执行(F10)、跟踪到一个函数内

18、部(F11)、从一个函数运行出来(shift+F11)、运行到光标所在位置(Ctrl+F10),以便方便地调试程序。这些命令用于在某个局部范围详细地调试程序。你也可以通过设置断点(F9)然后用直接运行(GO或者F5)来控制程序直接运行到断点位置。如果你设置了多个断点,程序将会在遇到的第一个断点处停下来。要从断点处继续运行,可以用上面所说的各种命令(F5, F10, F11, Shift+F11, Ctrl+F10)。结束调试要结束调试,可以按shift+F5或者选择菜单Debug|Stop Debugging。当结束调试后,所有调试窗口会自动关闭,Debug菜单也会自动还原为Build菜单。6

19、) 运行你的第一个程序你可以有三种方式运行你的程序:* 在开发环境中运行程序选择Build|Execute hello.exe(或者Ctrl+F5),在开发环境中执行你的程序。程序运行以后将显示一个类似于DOS的窗口,在窗口中输出一行“hello,紧接着在下面显示“Press any key to continue,这句话是系统提示你按任意键退出当前运行的程序,回到开发环境中。按任意键,窗口关闭,退回到Visual C+开发环境。我们实验中将用这种方式运行程序。* 在DOS环境下运行程序 打开DOS窗口,改变工作路径到项目目录,该目录是你在创建目录时指定的。如果你不记得了,可以在Develop

20、er Studio中的工作区窗口中选择项目名称(这里是“hello files),然后选择菜单View|Properties,将可以显示出项目路径。切换到debug子目录下,运行hello.exe,程序将输出:hello。实验二、分支与循环(4学时)1、实验目的:(1)学会编写简单的C+程序。(2)练习使用简单的输入输出。(3)熟悉各种流程控制语句的功能。2、实验任务:(1)输入并运行程序:用do-while语句编程,求自然数110之和。程序正确运行之后,去掉源程序中的#include语句,重新编译,观察会有什么问题。(2)do-while语句用for语句代替,完成相同的功能。(3)编程计算图

21、形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积后将其显示出来。3、实验步骤(1)建立一个控制台应用程序项目lab2_1,向其中添加一个C+源文件lab2_1.cpp,输入程序,检查一下确认没有输入错误,选择菜单命令编译源程序,再选择Execute运行程序,观察输出结果。(2)程序正确运行之后,在源程序第一行”#include ”前面加注释标记”/”使之成为注释行,重新编译,观察编译的结果。(3)另建立一个项目lab2_2,包含一个C+源程序lab2_2.cp

22、p,将do-while语句用for语句代替,完成与实验任务1相同的功能。(4)建立项目lab2_3,计算图形面积。圆形的面积计算公式为S=PI*r*r,长方形的面积计算公式为S=a*b,正方形的面积市场计算公式为S=a*a。程序中定义一个整型变量iType表示图形的类型,用cout语句输出提示信息让用户选择图形的型,用cin读入iType的值,然后,使用switch语句判断图形的类型,分别提示用户输入需要的参数值,计算出面积的值后用cout语句显示出来。最后编译运行程序。实验三、函数与重载(4学时)1、实验目的:(1)掌握函数的定义和调用方法。(2)练习重载函数使用。(3)练习函数模板的使用(

23、4)练习使用系统函数。2、实验任务:(1)编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。(2)编写重载函数Max1可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。(3)使用函数模板重新实现上小题中的函数Max1。(4)使用系统函数pow(x,y)计算xy的值,注意包含头文件math.h。(5)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。3、实验步骤:编写函数float Convert(float TempFer),参数的返回值都为float类型,实现算法C=(F-32)*5/9,在main()函数中实现输入、输出。程序名为l

24、ab3_1.cpp.(1)分别编写四个同名函数max1,实现函数重载,在main()函数中测试函数功能。程序名:lab3_2.cpp。(2)使用函数模板实现求任意类型数的最大值,针对不同的参数个数,编写两个同名函数模板max1,其参数个数不同,实现函数重载,在main()函数中测试函数的功能。和序名:lab3_3.cpp。(3)在main()函数中提示输入两个整数x,y,使用cin语句得到x,y的值,调用pow(x,y)函数计算x的y次幂的结果,再显示出来。程序名:lab3_4.cpp。(4)编写递归函数int fib(int n),在主程序中输入n的值,调用fib函数计算Fibonacci级

25、数。公式为fib(n)=fib(n-1)+fib(n-2),n2;fib(1)=fib(2)=1。使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:lab3_5.cpp。实验四、类的定义与使用(4学时)1、 实验目的: (1) 掌握类的定义和使用(2) 掌握类的定义和对象的声明(3) 复习具有不同访问属性的成员的访问方式。(4) 观察构造函数和析构函数的执行过程。(5) 学习类的聚集使用方法。 2、实验任务(1)定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中rank为枚举类型CPU

26、_Rank,定义为enum CPU_Rank=P1=1,P2,P3,P4,P5,P6,P7,frequency为单位为MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。(2)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类。(3)设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证

27、号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数。3、实验步骤定义枚举类型CPU_Rank,例如 enum CPU_Rank P1=1,P2,P3,P4,P5,P6,P7,再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU类的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:lab4_1.cpp。实

28、验五、类的继承与多态性(4学时)1、实验目的:(1)学习定义和使用类的继承关系,定义派生类。(2)熟悉不同继承方式下对基类成员的访问控制。(3)学习利用虚基类解决二义性问题(4)掌握运算符重载的方法(5)学习使用虚函数实现动态多态性。2、实验任务(1)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。(2)定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。(3)定义

29、一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车类有高度(height)等属性,汽车类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。(4)从实验七中的people(人员)类派生出student(学生)类,添加属性:班号char classNo7;从people类派生出teacher(教师)类,添加属

30、性:职务char principalship11、部门char department21。从student类派生出graduate(研究生)类,添加属性:专业char subject21、导师teacher adviser;从graduate类和teacher类派出TA(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。(5)定义Point类,有坐标x,y两个成员变量;对Point类重载“+”、“- -”运算符,实现对坐标值的改变。(6)定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle

31、和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函的作用。(7)前面实验中的People类重载“= =”运算符和“=”运算符,“= =”运算符判断两个People类对象的id属性是否相等;“=”运算符实现People类对象的赋值操作。3、实验步骤(1)编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:error C2248:age:cannot access private member declared in class Anim

32、alerror C2248:age:cannot access private member declared in class Animal把age改为公有成员变量后重新编译就可以了。程序名为:lab5_1.cpp(2)编写程序定义一个基类BassClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名为:lab5_2.cpp。(3)写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车类(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生

33、出摩托车(motorcycle)类,在main()函数中测试这个类。程序名为:lab5_3.cpp。编译成功后,把vehicle设置为非虚基类,再编译一次,此时系统报错,无法编译成功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。(4)编写程序定义Point类,在类中定义整型的私有成员变量x,y,定义成员函数Point& operator+();Point operator+(int);以实现对Point类重载“+”运算符,定义成函数Point& operator ();Point operator - -(int);以实现对Point类重载“- -”运算符,实

34、现对坐标值的改变。程序名:lab5_4.cpp。(5)编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车类(motorcar),从bicycle类和motorcar类派生出摩托车类(motorcycle),它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试看。程序名:lab5_5.cpp。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!