《面向对象程序设计》实验指导书(2013版)
- 格式:doc
- 大小:93.50 KB
- 文档页数:33
《面向对象程序设计》实验指导书《面向对象程序设计实验》课程组二0一三年三月目录实验预备实验环境和工具使用,多文件应用程序的开发过程 3实验一类与对象 7实验二运算符重载 9 实验三继承与多态性 12实验四模板 20实验五综合应用程序一(选做一个) 23实验六使用MFC进行可视化编程 25实验七综合应用程序二(选做一个) 41实验预备实验环境和工具使用多文件应用程序的开发过程一、实验目的与要求Visual C++提供了一个集源程序编辑、代码编译与调试于一体的开发环境,这个环境称为集成开发环境,对于集成开发环境的熟悉程度直接影响程序设计的效率,本实验通过学习Visual C++ 6.0界面的常用组成情况,并学习各种常用的窗口、菜单、按钮的意义和功能,并通过一些简单的程序设计,目的是使学生对用户界面、菜单和工具栏有一个全面的了解并掌握主要菜单命令。
●了解Visual C++集成开发环境的界面组成;●理解菜单命令的含义●掌握“New:”菜单命令、“Breakpoints”菜单命令、“Build”菜单命令、“Source Brower”菜单命令、工具栏的定制和修改、联机帮助。
●简单的程序设计二、实验设备与平台实验设备要求每个学生一台电脑,其中运行环境为VC++ 6.0系统。
三、实验内容及步骤1. 上机实验内容●Visual C++集成开发环境的用户界面识别;●新文件、新工程项目、工作区的创建;●设置、查看和删除断点;●编译和运行程序;●浏览资源信息;●工具栏的定制和修改;●联机帮助的使用;●熟悉Visual C++编写控制台模式程序的方法;上机输入例题,调试并运行,并观察结果;●上机编写一个程序实验1调试并编译程序。
在Visual C++下,编写控制台模式的程序和在DOS下编写程序相似,具有简单方便的特点,一般用于后台程序的编写。
控制台模式下程序的编写有两种方法,一是创建一个C++源程序文件,二是创建一个控制台模式的工程。
实验一熟悉Visual Basic集成开发环境一、实验目的1.了解Visual Basic语言的功能特点。
2.熟悉Visual Basic的开发环境。
3.掌握建立、编辑和运行一个简单的VB应用程序的全过程。
二、实验内容创建一个“标准EXE”类型的应用程序。
要求学生建立、编辑、调试、运行和保存简单的VB程序。
三、实验步骤1.熟悉Visual Basic的开发环境。
(1)定制第一个开发环境。
1)单击“工程窗口”、“属性窗口”、“窗体布局窗口”及“工具箱窗口”右上角的关闭按钮2)单击Form,将Form窗口放到最大。
(2)定制第二个开发环境。
1)选择“视图”菜单中的“工程资源管理器”选项,显示“工程资源管理器”窗口。
2)选择“视图”菜单中的“属性窗口”选项,显示“属性窗口”。
3)选择“视图”菜单中的“窗体布局窗口”选项,显示“窗体布局窗口”。
4)选择“视图”菜单中的“工具箱”选项,显示“工具箱”窗口。
5)将“工程资源管理器”、“属性窗口”、“窗体布局窗口”、“工具箱”四个窗口用鼠标拖动到合适的位置。
(3)增加窗体。
单击“工程”菜单中的“添加窗体”选项,或者在“工程资源管理器”中的“工程”图标上单击鼠标右键,系统弹出一个快捷菜单,选择“添加窗体”选项,将在Form1的基础上添加一个窗体Form2。
(4)增加标准模块。
单击“工程”菜单中的“添加模块”选项,可增加一个标准模块Module1,再单击一次增加第二个便准模块Module2;或者在“工程资源管理器”中的“工程”图标上单击右键,系统弹出一个菜单,将鼠标移到“添加”菜单,选择“添加模块”选项,将在工程1种添加一个标准模块Module1,在选择“添加模块”选项,将在工程1种添加第二个标准模块Module2。
(5)增加类模块。
单击“工程”菜单中的“添加类模块”选项,或者在“工程资源管理器”中的“工程”图标上单击鼠标右键,系统弹出一个菜单,将鼠标移到“添加”菜单,选择“添加类模块”选项,将在工程1种添加一个类模块Class1。
第一部份绪论 (2)本课程实验的作用与任务 (2)本课程实验的基础知识 (2)本课程实验教学项目及其教学要求 (2)第二部份基本实验指导 (4)实验一:Java基本语法 (4)实验三:Java面向对象程序设计(一) (9)实验五:Java常用类 (18)实验七:Java集合 (21)实验九:GUI图形用户界面 (26)第一部份绪论本课程实验的作用与任务使学生进一步深刻理解Java语言基本概念、语法规则及程序结构,熟练掌握Java语言程序设计的基本方法,提高利用Java在网络环境下开发、设计应用程序的能力,从而进一步培养学生的创新能力和解决实际问题的能力。
熟悉JDK工具的编程和调试环境;熟练掌握选择和循环结构的程序设计;熟练掌握面向对象的程序设计思想,包括系统类的应用和用户自定义类;充分理解类的三种的特性:封装、继承和多态,特别是通过接口和抽象类理解多态;掌握图形用户界面的设计,特别是事件处理;掌握包的使用;掌握常用的输入输出流类的应用。
最后能根据实验的要求认真完成实验报告。
本课程实验的基础知识Java的基本数据类型包括:byte,short,int,long,double,char。
Java的数组属于引用类型的数据,是将相同类型的数据按顺序组成的一种符合数据类型。
Java的运算符有算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符,特别要注意它们的优先级。
Java的控制语句有if语句、switch语句、for语句、while语句、do-while语句。
类是组成Java程序的基本要素,类有两个重要的成员:成员变量和方法。
类是创建对象的模板,类将对象的属性和功能封装为一个整体。
成员变量和类变量的区别、实例方法和类方法的区别、方法的重载、成员的访问权限等都是实验课程所依据的重要理论。
继承、多态、接口、包及内部类都是Java中非常重要的概念。
Java使用“流”来读写数据。
Java的输入输出工作是通过FileInputStream类、FileReader 类、BufferedReader类、ByteArrayInputStream类、ByteArrayOutputStream类等完成的。
面向对象程序设计实验指导书(适用:电子信息11级)彭召意陶立新编写计算机与通信学院2014.9目录实验一 C++基础的应用 (1)实验二类和对象的应用 (3)实验三类的构造函数、析构函数的应用 (4)实验四友员和运算符重载 (5)实验五类的继承与派生 (6)实验六类的多态性与虚函数 (7)附录:各实验的程序代码 (8)实验一 C++基础的应用(实验课时:2 实验性质:设计)实验名称: C++基础的应用实验目的: (1)进一步学习VC++6.0开发环境及程序调试方法。
(2)练习C++函数的定义及使用;(3)练习C++数组的定义及使用;(4)练习C++指针的定义及使用;(5)练习C++结构体的定义及使用;(6)练习多文件的程序的编译和运行方法;实验设备:(1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C++6.0。
实验内容: (1)熟悉Visual C++6.0编译系统的常用功能,特别是debug调试功能;(2)编程1:编写一个程序c1.cpp,用来求2个或3个整数的最大数。
要求:用重载函数的方法来求最大数;函数原型:int max( int a, int b) 和int max( int a, int b,int c)。
(3)编程2:编写一个程序c2.cpp,求:a!+ b! + c!的值。
要求:使用递归函数。
主程序和函数分开到两个源程序文件中,分别进行编译后,再运行;(4)编程3:有一个3*4的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和列号;(5)编程4:建立一个动态链表并进行输出和删除管理。
链表的每个节点为学生信息,包括:学号,姓名,性别,下一学生信息的指针。
程序的工作:(a)建立三个学生信息的节点,然后顺序输出该三个学生信息;(b)删除中间的节点,再顺序输出学生信息。
实验 1 类和对象1.1实验目的和要求(1) 理解类和对象的概念,掌握声明类和定义对象的方法。
(2) 掌握构造函数和析构函数的实现方法。
(3) 初步掌握使用类和对象编制C++程序。
(4) 掌握对象数组、对象指针和string类的使用方法。
(5) 掌握使用对象、对象指针和对象引用作为函数参数的方法。
(6) 掌握类对象作为成员的使用方法。
(7) 掌握静态数据成员和静态成员函数的使用方法。
(8) 理解友元的概念和掌握友元的使用方法。
1.2实验内容和步骤1.输入下列程序//test4-1.cpp#include<iostream>using namespace std;class Coordinate{ public:Coordinate(int x1,int y1){ x=x1;y=y1;}Coordinate(Coordinate &p);~Coordinate(){ cout<<”Destructor is calleded\n”;}int getx(){return x;}int gety(){return y;}private:int x,y;};Coordinate::Coordinate(Coordinate &p){ x=p.x;y=p.y;cout<<”copy-initialization Constructou is called\n”;}int main(){ Coordinate p1(3,4);Coordinate p2(p1);Coordinate p3=p2;cout<<”p3=(“<<p3.getx()<<”,”<<p3.gety()<<”)\n”;return(0);}(1)写出程序的运行结果。
(2)将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增添下述语句:cout<<”Constructor is called.\n”;写出程序的运行结果,并解释输出结果。
实验7 多态性专业:计算机科学与技术班级学号:姓名:实验地点:工A208 实验时间:2013-11-27 指导教师:李佐勇一、实验目的1.掌握用函数成员实现运算符重载的方法;2.掌握用友元函数实现运算符重载的方法;3.掌握纯虚函数的概念及应用。
二、实验环境一台PC机,Windows XP操作系统,Visual C++ 6.0开发环境。
三、实验内容1、三维坐标类对象之间的直接运算。
三维坐标类有数据成员x、y、z,对象间运算时要求通过函数成员实现“+”、前置“--”、“= =”运算符的重载,通过友元函数实现后置“--”、“+=”、“>>”和“<<”运算符的重载,实现三维坐标类对象间的直接运算。
main()完成对象的定义和有关运算符重载函数的测试。
2、由二维坐标点类(含有带默认形参值的构造函数、getX、getY、show函数)作为基类派生出圆类(含有带默认形参值的构造函数、getR、getarea、show函数);再由圆类作为基类派生出圆柱体类(含有带默认形参值的构造函数、getH、getV、show函数);考虑将show作为虚函数。
3、将实验内容2改为通过纯虚函数show完成数据成员的输出。
四、实验记录1.#include<iostream>using namespace std;class point{public:point(int xx=0,int yy=0,int zz=0):x(xx),y(yy),z(zz){}int getx() {return x;}int gety() {return y;}int getz() {return z;}point operator+(point &p1);point operator--();bool operator==(point &p1)const;friend point operator--(point&p1,int);friend void operator+=(point&p1,point&p2);friend ostream operator<<(ostream & out,const point &p){return out;}friend istream operator>>(istream &in,point &p) {in>>p.x>>p.y>>p.z;return in;}private:int x,y,z;};point point::operator+(point &p1){return point(x+p1.x,y+p1.y,z+p1.z);}point point::operator--(){x--;y--;z--;return *this;}bool point::operator==(point &p1)const{if(x==p1.x&&y==p1.y&&z==p1.z)return true;else return false;}point operator--(point&p,int){point temp=p;--p;return temp;}void operator+=(point &p1,point &p2){p1.x=p1.x+p2.x;p1.y=p1.y+p2.y;p1.z=p1.z+p2.z;}int main(){point p1(3,4,5),p2(5,6,7),p3;cout<<"p1="<<p1<<endl;cout<<"p2="<<p2<<endl;p3=p1+p2;cout<<"p1+p2="<<p3<<endl;p3=--p2;cout<<"p2="<<p2<<endl;cout<<"p3="<<p3<<endl;cout<<"p2==p3?: ";else cout<<"No"<<endl;p3=p2--;cout<<"p2="<<p2<<endl;cout<<"p3="<<p3<<endl;p3+=p2;cout<<"p2="<<p2<<endl;cout<<"p3="<<p3<<endl;return 0;}2.#include<iostream>#define pi 3.1415using namespace std;class point{public:point(int xx=0,int yy=0):x(xx),y(yy){}int getX() {return x;}int getY() {return y;}virtual void show(){cout<<"point.show!"<<endl;cout<<"("<<x<<","<<y<<")"<<endl;}protected:int x,y;};class circle:public point{public:circle(int xx=0,int yy=0,float r=1):point(xx,yy){ radius=r;}float getR() {return radius;}float getarea() {return pi*radius*radius;}void show(){cout<<"圆心坐标:";point::show();cout<<"圆半径:"<<radius<<endl;}protected:float radius;};class cylinder:public circle{public:cylinder(int xx=0,int yy=0,float r=1,float h=1):circle(xx,yy,r){ high=h;}float getH() {return high;}float getV() {return getarea()*high;}void show(){cout<<"cylinder.show:"<<endl;circle::show();cout<<"圆柱高度:"<<high<<endl;}private:float high;};int main(){point p1(1,3),*pp;pp=&p1;pp->show();circle c1(3,3,6);pp=&c1;pp->show();cout<<"circle area is :"<<c1.getarea()<<endl;cylinder cy1;pp=&cy1;pp->show();cout<<"cylinder volume is :"<<cy1.getV()<<endl;return 0;}3.#include<iostream>#define pi 3.1415using namespace std;class point{public:point(int xx=0,int yy=0):x(xx),y(yy){}int getX() {return x;}int getY() {return y;}virtual void show()=0;protected:int x,y;};class circle:public point{public:circle(int xx=0,int yy=0,float r=1):point(xx,yy){radius=r;}float getR() {return radius;}float getarea() {return pi*radius*radius;}void show(){cout<<"circle.show:"<<endl;cout<<"圆心坐标:("<<getX()<<","<<getY()<<")"<<endl;cout<<"圆半径:"<<radius<<endl;cout<<"圆面积:"<<getarea()<<endl;}protected:float radius;};class cylinder:public circle{cylinder(int xx=0,int yy=0,float r=1,float h=1):circle(xx,yy,r){high=h;}float getH() {return high;}float getV() {return getarea()*high;}void show(){cout<<"cylinder.show:"<<endl;circle::show();cout<<"圆柱高度:"<<high<<endl;cout<<"圆柱体体积:"<<getV()<<endl;}private:float high;};int main(){point *pp;circle c1(3,3,6);pp=&c1;pp->show();cylinder cy1;pp=&cy1;pp->show();return 0;}五、思考题虚函数和纯虚函数的应用场合?虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数实现的时候;纯虚函数是一个在基类中声明的虚函数,它在该基类中没有定义具体的操作内容,要求个派生类根据实际需求给出各自的定义。
《面向对象程序设计》实验指导书实验报告应包括的内容:班级,姓名,学号一、实验目的:二、实验内容:三、源程序四、实验结果一、实验基本步骤•打开Microsoft Visual C++ 6.0,选择[File] 一〉[New]—〉[File]—〉选择C++ Source File,在File里输入要保存的文件名;Location:选择要保存的文件路径,将默认的路径改为以自己名字命名的文件夹,建立一源程序文件。
如图1所示。
图1 建立源文件•按照所给的程序代码输入到计算机中,用[File] 一〉[Save All]存盘,或用存盘。
检查源程序,并编译运行,如图2所示。
编译过程中如有语法错误,可参考最下端提示信息。
如图3所示。
图2 保存、编译源程序图3 错误提示信息说明:在C++程序中如果使用了系统提供的一些功能(如cin和cout),就必须在程序的首部首先声明相关的包含这些功能的头文件(如iostream.h),否则,系统无法找到实现这些功能的代码。
在C++语言中一个头文件就是一个类库,类与类的预定义对象就包含在其中。
所以,在使用这些类库中所包含的预定义对象时,必须在程序首部加以声明。
注意:如运行完一个程序,再建立一个新的源程序时,可将以前运行完的程序注释掉,如图4所示。
如果不选用此方法,要重新建立源程序,应将当前工作区关闭,而不能只关闭当前源程序文件。
关闭工作区方法:[File]—〉Close W orkspace。
如图5所示。
工作区关闭以后,再按开始的方式选择[File] 一〉[New]—〉[File]—〉选择C++ Source File。
图4 注释程序界面图5 关闭工作区界面实验内容实验一C++程序设计基础练习一、实验目的1、学习编写简单的C++程序,并掌握C++程序的基本格式与规范。
2、理解C++程序结构的特点。
3、学习C++程序基本的输入输出操作。
4、学习数据类型常量和变量以及修饰符的使用。
5、学习基本的函数定义与调用方法。