面向对象程序设计实验教学大纲.docx
- 文档编号:6267786
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:15
- 大小:41.34KB
面向对象程序设计实验教学大纲.docx
《面向对象程序设计实验教学大纲.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验教学大纲.docx(15页珍藏版)》请在冰豆网上搜索。
面向对象程序设计实验教学大纲
《面向对象程序设计》
实验指导书
《面向对象程序设计实验》课程组
目录
实验预备实验环境和工具使用,多文件应用程序的开发过程
实验一类与对象
实验二构造函数、析构函数
实验三继承-单继承
实验四继承-多继承
实验五多态-运算符重载
实验六多态-虚函数
实验七I/O流与文件
实验八模板
实验预备实验环境和工具使用
多文件应用程序的开发过程
一、实验目的与要求
VisualC++提供了一个集源程序编辑、代码编译与调试于一体的开发环境,这个环境称为集成开发环境,对于集成开发环境的熟悉程度直接影响程序设计的效率,本实验通过学习VisualC++6.0界面的常用组成情况,并学习各种常用的窗口、菜单、按钮的意义和功能,并通过一些简单的程序设计,目的是使学生对用户界面、菜单和工具栏有一个全面的了解并掌握主要菜单命令。
●了解VisualC++集成开发环境的界面组成;
●理解菜单命令的含义
●掌握“New:
”菜单命令、“Breakpoints”菜单命令、“Build”菜单命令、“SourceBrower”菜单命令、工具栏的定制和修改、联机帮助。
●简单的程序设计
二、实验设备与平台
实验设备要求每个学生一台电脑,其中运行环境为VC++6.0系统。
三、实验内容及步骤
1.上机实验内容
●VisualC++集成开发环境的用户界面识别;
●新文件、新工程项目、工作区的创建;
●设置、查看和删除断点;
●编译和运行程序;
●浏览资源信息;
●工具栏的定制和修改;
●联机帮助的使用;
●熟悉VisualC++编写控制台模式程序的方法;
上机输入例题,调试并运行,并观察结果;
●上机编写一个程序
实验1调试并编译程序。
在VisualC++下,编写控制台模式的程序和在DOS下编写程序相似,具有简单方便的特点,一般用于后台程序的编写。
控制台模式下程序的编写有两种方法,一是创建一个C++源程序文件,二是创建一个控制台模式的工程。
⑴创建一个C++源程序文件
1启动VisualC++,单击“File”菜单下的“New”菜单命令,出现“New”对话框。
然后选择“Files”选项卡,在此选项卡的左侧,单击“C++SourceFiles”:
在选项卡的右侧,选择源程序存放的位置(location)以及源程序文件名(File),然后单击【OK】按钮。
注意C++源程序文件的扩展名为.cpp。
2在编辑区输入源程序,程序内容如下:
#include
voidmain()
{for(inti=0;i<3;i++)
{cout<<"Hello!
myfriend!
\n";}
}
3程序输入之后,请认真检查,然后按
(Build)按钮或者选择“Build”菜单命令,系统提示是否创建一个默认的工程工作区,单击【是】按钮即可。
4系统开始编译源程序并链接相应的文件,如果没有错误则在集成开发环境下方的状态栏中出现下列提示“0error(s),0warning(s)”,此时可以按
按钮或者选择“Build”菜单的“Excute1_1.exe”运行程序,然后观察程序运行结果。
用户也可以在DOS(Windows98)下或控制台模式下(Windows2000或WindowsXP)直接键入文件名“1_1.exe”也可以运行程序。
⑵创建一个控制台模式的工程
1启动VisualC++,单击“File”菜单下的“New”菜单命令,出现“New”对话框。
然后选择“Projects”选项卡,在此选项卡的左侧,单击“Win32ConsoleApplication”;在选项卡的右侧,选择工程文件存放的位置(location)以及工程文件名(ProjectName)。
然后单击【OK】按钮。
2在“Win32ConsoleApplication-Step1of1”对话框中选择应用程序的类型“Anemptyproject”,单击【Finish】按钮。
3在集成开发环境的左侧单击“FileView”属性页,右键单击“SourceFiles”,选择“AddFilestoFolder…”。
在“文件名”中填入文件名,此时也可以选择存在的文件。
4此时在“SourceFiles”左侧出现一个加号,单击加号,出现新的源程序文件“1_1.cpp”,双击此文件,在集成开发环境的右侧输入例1_1.
5按照创建一个C++源程序文件的第④个步骤编译和运行程序。
图1-1向工程中添加源程序文件
图1-2选择添加的源程序文件的文件名与类型
实验一类与对象
一、实验目的与要求
(1)掌握类和对象的概念、定义和使用方法。
(2)掌握不同特性对象成员的访问方法
二、实验设备与平台
实验设备要求每个学生一台电脑,其中运行环境为VC++6.0系统。
三、实验内容及步骤
(1)定义一个描述学生类,数据成员包括:
姓名、性别、年龄;成员函数包括:
输出各个数据成员的值,设置各个数据成员的值。
(2)求点到直线的距离。
定义一个点类Point,数据成员包括:
坐标点。
成员函数包括:
设置各个数据成员的值的构造函数Point(),取得坐标值的函数Getx(),Gety(),设计一直线类Line,数据成员包括:
直线系数a,b,c;成员函数包括:
取得系数的函数Geta(),Getb(),Getc();构造函数Line();
•说明:
•d=|a*x0+b*y0+c|/sqrt(a*a+b*b)
实验二构造函数与析构函数
一、实验目的与要求
1.掌握构造函数和析构函数的使用方法。
2.掌握静态成员的使用方法。
3.掌握友员的使用方法。
二、实验设备与平台
实验设备要求每个学生一台电脑,其中运行环境为VC++6.0系统。
三、实验内容及步骤
(1)写出下列程序的执行结果,然后上机进行验证。
用VC6的Debug的功能跟踪构造函数、析构函数和成员函数的执行顺序。
#include
classTEST
{public:
TEST(){cout<<"调用构造函数"< x=2;y=50;z=9;} TEST(inta,intb,intc) { cout<<"调用重载构造函数"< x=a;y=b;z=c; } voiddisplay() { cout<<"x="< } intmax(inta,intb) { if(a>b)returna;elsereturnb; } ~TEST() { cout<<"调用析构函数"< cout< "< } private: intx,y,z; }; voidmain() { TESTobj1; obj1.display(); TESTobj2(33,20,80); obj2.display(); } (3)静态成员练习: 书例子 classtc { (4)友元练习: 书例子 实验三继承-单继承 一、实验目的及要求 1、掌握继承、基类和派生类的概念。 2、掌握初始化基类成员的方法。 3、掌握派生类对基类的继承。 二、实验设备与平台 1、硬件环境: 微型计算机,2、软件环境: VisualC++6.0; 三、实验内容及步骤 •要求: 设计点类、圆类和圆柱类,其中,圆类继承点类,圆柱类继承圆类。 求: 圆面积。 圆柱表面积、体积。 •圆的面积: S=PI*R*R •周长: C=2*PI*R •圆柱表面积: A=2*PI*R*H+2*PI*R*R •=C*H+2*S •圆柱体积: V=PI*R*R*H=S*H •classPoint//点类 •{ •protected: •doublex,y; •public: •Point(doublex0,doubley0); doubleArea(); •}; •classCircle: publicPoint{//圆类 •protected: •doubler;//半径 •public: •Circle(doublex0,doubley0,doubleradius) •doubleArea()//计算圆的面积 • •}; •classCylinder: publicCircle{//圆柱体类 •doubleh;//高度 •public: •Cylinder(doublex0=0,doubley0=0,doubleradius=0,doubleheight=0){ • •doubleArea()//计算圆柱体的表面积 • •doubleVolume()//计算圆柱体的体积 •} •}; 思考: 点,矩形,立方体? • • 实验四继承-多继承 一、实验目的及要求 1、掌握继承、基类和派生类的概念。 2、掌握初始化基类成员的方法。 4、掌握派生类对基类的继承。 二、实验设备与平台 1、硬件环境: 微型计算机,2、软件环境: VisualC++6.0; 三、实验内容及步骤 1阅读程序,写出实验结果。 #include"stdafx.h" #include"iostream.h" classBASE1 {public: voidshow_i() {cout< protected: inti; }; classBASE2 {public: voidshow_j() {cout< protected: intj; }; classDERIVED: publicBASE1,publicBASE2 {public: voidset(intx,inty) {i=x; j=y; } }; intmain(intargc,char*argv[]) {DERIVEDobj; obj.set(5,7); obj.show_i(); obj.show_j(); return0; } 2书上作业。 Student,worker,s_w. • 实验五运算符重载 一、实验目的及要求 1、掌握用成员函数重载运算符的方法。 2、掌握用友元函数重载运算符的方法。 二、实验设备与平台 1、硬件环境: 微型计算机,2、软件环境: VisualC++6.0; 三、实验内容及步骤 1、定义一个复数类,通过重载运算符: “ *”,“/”,直接实现二个复数之间的乘除运算。 编写一个完整的程序,测试重载运算符的正确性。 要求乘法"*"用友元函数实现重载,除法"/"用成员函数实现重载。 分析: 两复数相乘的计算公式为: (a+b i)*(c+d i)=(ac-bd )+(ad+bc) i 两复数相除的计算公式为: (a+b i)/(c+d i)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d) i 2、定义一个分数类,通过重载运算符: “ *”,“/”,直接实现二个分数之间的乘除运算。 编写一个完整的程序,测试重载运算符的正确性。 要求乘法"*"用友元函数实现重载,除法"/"用成员函数实现重载。 实验六多态性-虚函数 一、实验目的及要求 5、学习虚函数和纯虚函数的定义与使用方式。 6、理解抽象类的概念,学习如何用指针指向其他的派生类,实现多态性。 7、掌握抽象类的定义与使用方式,并注意指针的用法。 7、学习如何使用虚函数、纯虚函数、抽象类和实现类的多态性。 二、实验设备与平台 1、硬件环境: 微型计算机,2、软件环境: VisualC++6.0; 三、实验内容及步骤 1、虚函数的简单使用。 #include classbase {public: virtualvoidfh(){cout«"Inbaseclass\n";} }; classsubclass: publicbase {public: virtualvoidfn(){cout«"Insubclass\n";} }; voidtest(base&b) {b.fn();} voidmain() {basebe; subclasssc; cout«"Callingtest(bc)\n"; test(bc); cout«"Callingtest(sc)\n"; test(sc); } 2、定义一个从正方形、球体和圆柱体的各种运算中抽象出一个公共基container类,在其中定义表面积和体积的纯虚函数,分析: 定义一个派生于container类的正方体类cube,在类中都具有求表面积的和体积的重定义的成员函数。 定义一个派生于container类的球体类sphere,在类中都具有求表面积和体积的重定义的成员函数。 定义一个派生于container类的圆柱体类cylinder,在类中都具有求表面积和体积的重定义的成员函数。 实验八模板 一、实验目的及要求 1.了解函数模板、类模板与模板函数、模板类的关系; 2.熟悉函数模板、类模板的声明与实例化过程; 3.掌握应用模板进行的程序设计 二、实验设备与平台 实验设备要求每个学生一台电脑,其中运行C程序环境为VC6.0系统。 三、实验内容及步骤 模板的概念: 若一个程序的功能是对某种特定的数据类型进行处理,则将所处理的数据类型说明为参数,就可把这个程序改写为模板。 模板可以让程序对任何其他数据类型进行同样方式的处理。 C++程序由类和函数组成,模板也分为函数模板(functiontemplate)和类模板(classtemplate)。 因此,可以使用一个带有多种不同数据类型的函数和类,而不必显式记忆针对不同的数据类型的各种具体版本。 函数模板的一般定义形式是: template<类型形式参数表> 返回类型FunctionName(形式参数表) { //函数定义体 } 其中的类型形式参数表可以包含基本数据类型,也可以包含类类型。 如果是类类型,则须在前面加上calss。 这样的函数模板定义,不是一个实实在在的函数,编译系统不为其产生任何执行代码。 该定义只是对函数的描述,表示它每次能单独处理在类型形式参数表中说明的数据类型。 当编译系统发现有一个函数调用: FunctionName(实在参数表); 将根据实在参数表中的类型,确认是否匹配函数模板中对应的形式参数表,然后生成一个重载函数。 该重载函数的定义体与函数模板的函数定义体相同,而形式参数表的类型则以实在参数表的实际类型为依据。 该重载函数称为模板函数(templatefunction)。 注意: 函数模板与模板函数的区别在于,函数模板是模板的定义,定义中用到通用类型参数。 模板函数是实实在在的函数定义,它由编译系统在碰见具体的函数调用时所生成,具有程序代码。 实验1: 用函数模板方法编写程序,对给各种不同类型的三个数分别求最大数。 要求: 编程序上机通过,写出运行结果。 实验2: 用函数模板方法编写程序,对给各种不同类型的两个数的和。 要求: 编程序上机通过,写出运行结果。 实验七I/O流与文件 一、实验目的与要求 (1)掌握流的概念。 (2)掌握文本文件和二进制文件的使用方法。 二、实验设备与平台 1、硬件环境: 微型计算机,2、软件环境: VisualC++6.0; 三、实验内容与步骤: (1)#include voidmain() { doublevalues[]={1.44,36.47,625.7,4096.24}; for(inti=0;i<4;i++) {cout.width(10); cout< } } (2)#include #include voidmain() { doublevalues[]={1.44,36.47,625.7,4096.24}; char*names[]={"Rose","John","Alice","Mary"}; for(inti=0;i<4;i++) cout< } (3)建立一个文本文件“textfile.txt”(内容由读者选定),然后显示该文件, (4)建立若干个结构体类型的学生数据。 要求 (1)键盘输入学生的信息,学生的属性包括学号、姓名和成绩, (2)用文件流中write函数将学生的信息写入文件D: \\student.dat (3)将student.dat中所有的数据读到内存中并显示输出在屏幕上。 (10分) 编写程序上机完成如下工作: Structstudent { Intnum; Charname[20]; Floatscore; }stu[10]; Main() { //用键盘输入 For(inti=0;i<10;i++) Cin>>。 。 。 。 。 。 。 //写入文件中 Ifstreamifile(“d: \\student.dat”,ios: : binary);//建立文件,并打开 if(! ifile.fail())//异常处理 { cerr<<“notopen! ” return0; } For(inti=0;i<10;i++) Ifile.write(……..);//写入 Ifile.close();//关闭 //读文件 Ofstreamofile(“d: \\student.dat”,ios: : binary); For(inti=0;i<10;i++) {Ofile.read(…..)//读出文件 Cout< 实验六综合应用程序一 一、实验目的 本实验是对前面所学知识的总结,通过一个比较完整的应用程序的设计,将学过的知识连贯起来,掌握开发一个实际应用程序的步骤,同时学会使用开发工具实现界面友好的应用程序。 并通过本实验,掌握如何运用面向对象技术对具体的应用系统进行分析和设计。 二、基本知识点 1、类和对象的定义、对象的初始化和使用 2、面向对象的继承机制 3、虚函数与多态性 4、运算符重载 5、文件的使用 6、算法的使用 三、基本要求 1、理解面向对象的特性 2、掌握面向对象程序设计的开发方法 3、有一定的分析问题和解决问题的能力 4、根据学过的知识点,充分利用已有的开发工具和素材,使程序编写具有更高的效率,能真正地解决实际问题。 四、实验内容: 可以在多个题目中选择一个: 1、编写一本通信录 2、模拟简单计算器 3、简单的管理系统的设计: 如人事、工资、学生成绩等。 (要求部分功能实现)。 五、学生实验报告要求 1、实验步骤 1)设计确定类的结构及各类之间的关系,注意成员变量和函数的性质(共有、私有或保护),哪些函数需要动态(定义为虚拟函数)。 2)创建系统项目(解决方案,Project)。 3)按上述结构定义各类,在构造函数中对成员变量进行初始化。 4)定义各类中的成员函数 5)对用到的算法进行描述 2、完成编写相关实验代码 3、对实验结果进行分析 4、对本次实验要有总结 注意: 要求在系统设计阶段对数据结构(主要是类的结构及类之间的联系)进行分析研究,充分利用面向对象的特性,使类结构尽可能合理和高效。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 实验教学 大纲
![提示](https://static.bdocx.com/images/bang_tan.gif)