实验指导书-面向对象方法与c++程序设计修改

上传人:第*** 文档编号:34064123 上传时间:2018-02-20 格式:DOC 页数:21 大小:263KB
返回 下载 相关 举报
实验指导书-面向对象方法与c++程序设计修改_第1页
第1页 / 共21页
实验指导书-面向对象方法与c++程序设计修改_第2页
第2页 / 共21页
实验指导书-面向对象方法与c++程序设计修改_第3页
第3页 / 共21页
实验指导书-面向对象方法与c++程序设计修改_第4页
第4页 / 共21页
实验指导书-面向对象方法与c++程序设计修改_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《实验指导书-面向对象方法与c++程序设计修改》由会员分享,可在线阅读,更多相关《实验指导书-面向对象方法与c++程序设计修改(21页珍藏版)》请在金锄头文库上搜索。

1、 面向对象方法与 C+程序设计实 验 指 导 书编 制 人: 马艳 适 用: 计算机科学与技术 2013 级 编制时间: 2015-2-10 准备实验 VC+ 6.0 开发环境及简单程序设计(0 学时)一、实验目的1熟悉 Visual C+ 6.0 的开发环境,学习用 Visual C+ 6.0 编写标准的 C+控制台程序。2 学会编写简单的 C+程序,包括基本数据类型,运算符与表达式,基本控制结构,简单输出。3观察头文件的作用。以及 using namespace std;4学会使用 VC+6.0 开发环境中的 debug 调试功能:单步执行、设置断点、观察变量值。掌握函数的定义和调用方法。

2、5练习重载函数的使用。6练习通过动态内存分配实现动态数组,并体会指针在其中的作用;二、实验任务1使用 Visual C+建立一个非图形化的标准 C+程序,编译、运行以下程序,比较两个程序的差别:#include using namespace std;void main()coutvoid main()cout*(arr+idx)return ;10利用 cinrowcol;获得键盘输入,取得确定的行、列值。通过“a=new int*row;”,动态生成一组共 row 个“int*”指针空间,然后通过“ai=new intcol”为每行动态生成col 个“int”型数据的存储空间。访问上述动态

3、生成的第 i 行第 j 列的 int 型存储空间时,可使用“*(*(a+i)+j)” 、 “*(ai+j)”或“aij” 。11通过使用结构体来“串联”起一个可以存放数据的动态链表,且该结构体的其中某一分量,即 next 必须为指向本结构体的指针。通过使用 new 运算符依次生成各动态链表项,并通过 next 指针将它们“串联 ”成为链表。然后遍历链表进行查询。三、实验分析记录出现的问题以及解决方法,贴出最后运行结果。实验一 类与对象(I) (2 学时)一、实验目的(1) 理解类和对象的概念,掌握声明类和定义对象的方法。(2) 掌握构造函数和析构函数的实现方法。(3) 初步掌握使用类和对象编制

4、 C+程序。(4) 掌握对象数组、对象指针和 string 类的使用方法。二、实验任务1定义一个类,其中包括类的构造函数和析构函数,并至少包含两个数据成员和一个普通成员函数。在 main()函数中定义这个类的对象,并调用其中的成员函数。2.定义一个类,对分别对类中的构造函数和普通成员函数进行重载,在 main()函数中定义这个类的对象,并调用其中重载的构造函数和成员函数。 (可以写成一个程序,也可以分成两个程序。 )3. 定义一个类,其中要自定义拷贝构造函数。在 main()函数中定义这个类的对象,并调用其中的拷贝构造函数。三、实验分析记录出现的问题以及解决方法,贴出最后运行结果。实验二 类与

5、对象(II ) (2 学时)一、实验目的(1) 掌握使用对象、对象指针和对象引用作为函数参数的方法。(2) 掌握类对象作为成员的使用方法。(3) 掌握静态数据成员和静态成员函数的使用方法。(4) 理解友元的概念和掌握友元的使用方法。(5) 掌握运算符重载二、实验任务1. 定义一个类,其中至少包含两个数据成员和一个普通成员函数。在 main()函数中定义这个类的一维对象数组,并指针形式调用其中的成员函数。2定义一个类,其中定义至少两个静态数据成员 count 和 sum 和一个静态成员函数show() ,用于计算定义的对象数和定义的所有对象中某一个变量的累加和。在 main()函数中定义这个类的

6、对象,并调用其中的 show()成员函数打印 count 和 sum 的最终值。3. 至少定义两个类,在一个类中内嵌另一个类的对象作为数据成员, 。在 main()函数实现对类对应对象的初始化。4.定义一个类,其中至少含有一个常数据成员和常成员函数。在 main()函数实现对该类的常对象的定义,并调用其中的常成员函数。三、实验分析记录出现的问题以及解决方法,贴出最后运行结果。实验三 派生与继承(2 学时)一、实验目的(1) 掌握派生类的声明方法和派生类构造函数的定义方法。(2) 掌握不同继承方式下,基类成员在派生类中的访问属性。(3) 掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则。

7、(4) 学习虚基类在解决二义性问题中的作用。二、实验任务1定义一个基类 Animal,有私有整型成员变量 age,构造其派生类 dog,在其成员函数SetAge(int n)中直接给 age 赋值,看看会有什么问题,把 age 改为公有成员变量,还会有问题吗?编程试试看。2定义一个基类 BaseClass,有整型成员变量 Number,构造其派生类 DerivedClass,观察构造函数和析构函数的执行情况。3定义一个车(vehicle )基类,具有 MaxSpeed、Weight 等成员变量,Run、Stop 等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行

8、车(bicycle)类有高度(Height )等属性,汽车(motorcar)类有座位数(SeatNum )等属性。从 bicycle和 motorcar 派生出摩托车(motorcycle )类,在继承过程中,注意把 vehicle 设置为虚基类。如果不把 vehicle 设置为虚基类,会有什么问题?编程试试看。4假设商店有如下几种商品:衬衣、帽子和立柜:衬衣:单价,产地,库存量,布料帽子:单价,产地,库存量,样式立柜:单价,产地,库存量,颜色对这些商品的操作有:入库,出库,该类商品的总价格计算。要求用类的继承与派生关系将上述各种货品表示出来,要求有构造函数初始化成员变量,并完成所要求的功能

9、提示:1编写程序定义基类 Animal,成员变量 age 定义为私有的。构造派生类 dog,在其成员函数 SetAge(int n)中直接对 age 赋值时,会出现类似以下的错误提示:error C2248: age : cannot access private member declared in class Animalerror C2248: age : cannot access private member declared in class Animal把 age 改为公有成员变量后重新编译。并验证其他访问权根的作用结果。2编写程序定义一个基类 BaseClass,构造其派生类

10、DerivedClass,在构造函数和析构函数中用 cout 输出提示信息,观察构造函数和析构函数的执行情况。用 debug 功能跟踪程序执行过程,观察基类和派生类的构造函数和析构函数的执行情况。3如未定义为虚基类,重复继承的基类在派生类对象实例中将存储了多个副本。观察构造和析构函数的调用情况。4这三种商品数据之间的联系,它们有哪些共有的数据,构造一个“基类” ,然后由此基类再构造三个类。共有的操作有:出库,入库,显示,总价计算,可定义为:void in(int add_cnt);void out(int del_cnt);void display();double total_price()

11、;三、实验分析记录出现的问题以及解决方法,贴出最后运行结果。实验四 多态性(2 学时)一、实验目的(1) 了解多态性的概念。(2) 掌握运算符重载的基本方法。(3) 掌握虚函数的定义和使用方法。(4) 掌握纯虚函数和抽象类的概念和用法。二、实验任务1.分析并调试下列程序,写出程序的输出结果,并解释输出结果。/test5_1.cpp#includeusing namespace std;class Bpublic:virtual void f1 (double x)coutf1(1.23);pb-f1(1.23);pb-f2(1.23);pb-f3(1.23);pb-f3(3.14);retur

12、n 0;2.编写一个程序,其中设计一个时间类 Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在大于等于 0,分钟范围限制在 059,秒钟范围限制在 059 秒。【提示】时间类 Timepublic:Time(int h=0,int m=0,int s=0);Time operator+(Timevoid disptime(string);private:int hourse;int minutes;int seconds;3.给出下面的抽象基类 container;class containerprotected:double radiu

13、s;public:container(double radius1);virtual double surface_area()=0;virtual double volume()=0;要求建立 3 个继承 container 的派生类 cube、sphere 与 cylinder,让每一个派生类都包含虚函数 surface_area()和 volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用 C+的多态性,分别计算边长为 6.0 的正方体、半径为 5.0的球体,以及半径为 5.0 和高为 6.0 的圆柱体的表面积和体积。4.编写一个程序,用于进行集合的并、差

14、和交运算。例如输入整数集合9 5 4 3 6 7和2 4 6 9 ,计算出它们进行集合的并、差和交运算后的结果。【提示】i. 可用以下表达式实现整数集合的基本运算:s1+s2 两个整数集合的并运算s1-s2 两个整数集合的差运算s1*s2 两个整数集合的交运算ii. 参考以下 Set 类的框架,用于完成集合基本运算所需的各项功能。class setpublic:set:set();void set:input(int d);int set:length();int set:getd(int i);void set:disp(); set set:operator+(set s1);set se

15、t:operator-(set s1);set set:operator*(set s1);set set:operator=(set s1);protected:int len;int sMAX;三、实验分析记录出现的问题以及解决方法,贴出最后运行结果。实验五 模板与异常处理(2 学时)一、实验目的(1)正确理解模板的概念。(2)掌握函数模板和类模板的声明和使用方法。(3)学习简单的异常处理方法。二、实验任务1.分析并调试下列程序,写出运行结果并分析原因。(1)/test6_1_1.cpp#include using namespace std;templateT max (T x,T y) return xy? x:y;int max(int a,int b)return ab? a:b;double max (double a,double b)return ab? a:b;int main() coutusing namespace std;int max(int a,int b)return ab? a:b;double max (double a,double b)return ab? a:b;int main() coutclass Array.;具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为 int

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

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