《面向对象程序设计》实验讲义

上传人:xzh****18 文档编号:34438200 上传时间:2018-02-24 格式:DOC 页数:12 大小:101KB
返回 下载 相关 举报
《面向对象程序设计》实验讲义_第1页
第1页 / 共12页
《面向对象程序设计》实验讲义_第2页
第2页 / 共12页
《面向对象程序设计》实验讲义_第3页
第3页 / 共12页
《面向对象程序设计》实验讲义_第4页
第4页 / 共12页
《面向对象程序设计》实验讲义_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《《面向对象程序设计》实验讲义》由会员分享,可在线阅读,更多相关《《面向对象程序设计》实验讲义(12页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计实验指导书目录实验一 C+程序设计基础练习1实验二 堆栈类的设计 4实验三 使用继承实现字符串类 7实验四 运算符重载 81实验一 C+程序设计基础练习一、实验目的1、能够编写简单的 C+程序,并掌握 C+程序的基本格式和规范。2、掌握基本的输入/输出操作。3、掌握 C+中变量的定义方式,掌握引用的定义方法,并理解其本质。4、掌握 C+中函数重载的方法。5、掌握 C+中进行内存动态分配和释放的方法。二、实验仪器Windows 操作系统,Visual C+ 6.0。三、实验原理C+中的控制台应用程序使用 cin 输入数据,使用 cout 输出数据;引用类型定义的变量只是给已经存在

2、的变量起了一个新的名字,并未为其分配内存空间;C+中使用 new 及 delete 进行内存的动态分配和回收。四、实验内容与步骤(一) 、使用 VC+开发环境编写、调试、运行 C+控制台应用程序程序的基本步骤:1.打开 Microsoft Visual C+ 6.0。2.选择“新建”菜单项,在弹出的对话框中选择 projects 中的 Win32 Console Application 选项。输入一个自定义的项目名称,例如:ex01 等,在 location 下面的编辑框内可以重新设定应用程序所处的位置。然后按确定,如下图所示。23.在接下来弹出的对话框中单击完成。4.选中文件视图(FileV

3、iew) ,在该视图中首先展开 ex01 前面的加号,然后选中 Source Files 选项,单击右键,产生弹出菜单,在菜单中选择“添加文件到文件夹”菜单项。如下面两图所示。5.在弹出的对话框中输入一个你要建立的 C+源文件的名字,注意文件的扩展名一定是.cpp,例如:h1.cpp。然后单击确定,并随后双击打开你定义的 C+源文件。36.在源文件中输入你编写的程序。7.使用 Ctrl + F7 编译你的源程序,使用 Ctrl + F5 执行程序。8.另外,可以使用右键菜单的”插入/ 清除断点”菜单项来为源程序设置断点,并使用 F5 启动调试程序。9.说明:在 C+程序中如果使用了 cin 和

4、 cout 就必须在源程序的开头加上如下的文件包含语句:#include (二) 、实验内容:1.求阶乘。从键盘输入一个数,求出它的阶乘。要求使用 C+当中的输入/ 输出方法。2.从键盘输入一个长整型的数,判断是否为素数,并将结果输出。要求使用 C+当中的输入/输出方法。3.分别编写三个交换函数 void swap(int a, int b); void swap(int *a, int *b);void swap(int &a, int &b),然后在主函数中定义两个整型变量,并赋予初值,依次调用三个交换函数,调用一次输出一次两个变量的值。说明:由于传引用(swap(int &a, int

5、&b) )和传值(swap(int a, int b) )的函数调用方式相同,编译时会出现语法错误,所以,对于两个函数可以分开测试。4.编写程序用 new 为一整型数组动态分配内存空间,并为该数组赋值、将结果显示出来。其主要步骤可以简单描述如下:(1)定义一个整型变量 n 作为数组的大小,并用 cin 从键盘输入初值送给 n。(2)使用 new 分配 n 个整型变量的空间,并把首地址送给一个定义好的整型指针 p 当中。(3)利用 p 完成对数组元素的输入/输出。(4)使用 delete 释放数组使用的内存空间。五、实验报告要求要求写出以下几个部分:一、实验目的;二、实验原理;三、实验内容及步骤

6、(代码) ;四、实验结果(如果实验中有多个小题,每一个小题的实验结果可以直接附在代码的后面) ;五、实验结果分析,针对实验结果写出相应的分析,要求有自己的见解,不要照搬书上和讲义上的解释;六、回答三个或三个以上的思考题。六、思考题1.引用的本质是什么?2.动态内存分配与普通的内存分配有什么区别?3.如何理解名字分裂原则?它与函数重载之间有什么关系?4.比较一下 C+和 C 中变量的定义方式有何异同?45.如何理解控制台应用程序以及 Windows 应用程序?实验二 堆栈类的设计一、实验目的1.掌握类的定义及实现方法。2.掌握对象的定义方法,理解对象的产生与构造函数的调用关系。3.掌握数据成员、

7、成员函数的定义方式和访问方式。4.掌握构造函数、析构函数以及缺省构造函数的定义方法和被调用后的执行过程。5.了解拷贝构造函数的定义方法以及应该注意的地方。二、实验仪器Windows 操作系统,Visual C+ 6.0。三、实验原理设计类是面向对象程序设计的基本内容,主要包括类的框架、数据成员、构造函数、成员函数、析构函数的设计,函数不再作为源程序的基本单位,具有一定功能的函数一般作为成员函数被封装在某个类当中。另外,本次实验还涉及到堆栈结构,请参见数据结构方面的书籍。四、实验内容与步骤1.设计一个堆栈类,要求能够实现对栈的基本操作,弹栈,压栈。另外要求对栈的内存分配要使用 new 及 del

8、ete 来实现。2.要求堆栈类的定义放在一个头(.h)文件中,而实现文件放在对应的实现(.cpp)文件中。3.实验代码的框架简述:/stack.h#include const int SIZE = 100;class stackprivate:int *p;/栈底指针int top; /栈顶位置int size;/记录堆栈的大小public:stack();/使用一个固定值来初始化栈的空间stack(int m);/通过构造函数指定一个大小来设置栈的大小int IsEmpty();/判断栈是否为空void Push(int i);/压栈5int Pop();/弹栈int GetTopElem(

9、);/返回栈顶元素void Clear();/清空栈int GetCurrentSize();/返回栈中元素的个数;/stack.cpp#include “stack.h”stack:stack(). = new int SIZE;top = ;stack:stack(int m)p = new int m;top = ;int stack:IsEmpty()void stack: Push(int i)./要判断栈满的情况int stack:Pop()./要判断栈空的情况int stack:GetTopElem().void stack:Clear()6int stack:GetCurren

10、tSize() .stack:stack().;void main()./定义一个不带参数的对象./定义一个带整型参数的对象,其中整型参数的值由键盘输入。./进行基本的栈的操作,并输出相关信息五、实验报告要求要求写出以下几个部分:一、实验目的;二、实验原理;三、实验内容及步骤(代码) ;四、实验结果;五、实验结果分析,针对实验结果写出相应的分析,要求有自己的见解,不要照搬书上和讲义上的解释;六、回答三个或三个以上的思考题。六、思考题1.在类的定义中再添加一个拷贝构造函数,然后在主函数中加入下面的代码:stack ob1;stack ob2(ob1);然后分析这样做程序的执行过程怎样?会不会出现

11、问题?2.把一些类的成员说明成私有的意味着什么?3.如何理解拷贝构造函数和缺省拷贝构造函数?4.const 修饰成员函数、函数参数、变量、指针、对象分别表示什么?7实验三 使用继承实现字符串类一、实验目的1.掌握继承的基本含义和主要作用。2.掌握派生类的定义方法。3.掌握派生类对象调用构造函数的顺序。4.掌握公有派生的主要性质。二、实验仪器Windows 操作系统,Visual C+ 6.0。三、实验原理继承是面向对象程序设计的基本内容,它通过从某一个类或多个类派生出一个新类来定义新的类,派生类除了拥有基类的所有属性之外,还用自己的数据成员和成员函数,从而实现了代码的重用。继承是实现运行时多态

12、的基础。四、实验内容与步骤1.定义一个基类,实现基本的输入/输出字符串的功能。2.定义一个类继承该基类,实现字符串的倒置、比较、求长度、判空、判断是否回文、链接一个字符串等。3.在主函数定义一个派生类对象,验证所设计的所有函数。五、实验报告要求要求写出以下几个部分:一、实验目的;二、实验原理;三、实验内容及步骤(代码) ;四、实验结果;五、实验结果分析,针对实验结果写出相应的分析,要求有自己的见解,不要照搬书上和讲义上的解释;六、回答三个或三个以上的思考题。六、思考题1.如果在派生类当中定义了一个对象成员,那么当用派生类定义一个对象时,对象成员的构造函数,基类构造函数,派生类的构造函数,他们三

13、者的调用顺序怎样?2.私有派生、保护派生的性质怎样?3.在为字符串分配内存空间后,在进行字符串链接之后如果发现目标对象的内存空间不够该怎么办?4.如何解决多重继承中出现的二义性问题?8实验四 运算符重载一、实验目的1.掌握运算符重载的概念和必要性。2.掌握实现运算符重载的两种方式:友元函数方式和成员函数方式。3.了解一些特殊运算符的重载方法。二、实验仪器Windows 操作系统,Visual C+ 6.0。三、实验原理编译器提供的运算符只能实现对预定义数据类型的运算,类作为用户定义的新的数据类型,编译器由于不知道运算规则,所以对象之间的运算无法进行,要实现对象相互之间的运算就必须将对象之间的运

14、算规则告诉编译器。换一种说法就是将已有的运算符赋予新的功能,让其能够实现对象之间的运算,这个工作就叫运算符重载,它使用 operator 关键字,主要有两种方式实现运算符的重载:友元函数方式;成员函数方式。四、实验内容与步骤1.定义一个复数类,使用成员函数方式实现复数的加、减、乘、除、取负,以及判断两复数是否相等。2.重新定义一个复数类,使用友元函数方式实现上述功能。3.代码的基本框架如下:(1)# include class complexprivate :double real,imag;public:complex(.)/构造函数void show()./显示复数./多个成员函数的声明;

15、9/函数的实现void main()./测试(2)# include class complexprivate :double real,imag;public:complex(.)/构造函数void show()./显示复数./多个友元函数的声明;/函数的实现void main()./测试五、实验报告要求要求写出以下几个部分:一、实验目的;二、实验原理;三、实验内容及步骤(代码) ;四、实验结果;五、实验结果分析,针对实验结果写出相应的分析,要求有自己的见解,不要照搬书上和讲义上的解释;六、回答三个或三个以上的思考题。10六、思考题1.为什么要对运算符进行重载?2.: 运算符的作用是什么?3.对友元函数方式和成员函数方式进行比较。4.编译器是如何处理重载运算符的?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号