面向对象程序设计实验指导书(5)

2019-03-11 14:25

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

实验七 继承与派生

(4学时)

一、实验目的

1.学习定义和使用类的继承关系,定义派生类。 2.熟悉不同继承方式下对基类成员的访问控制。 3.学习利用虚基类解决二义性问题。

二、实验任务

1.定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。

2.定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。

3.定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。

4.(选做)从实验6中的people(人员)类派生出student(学生)类,添加属性:班号char classNO[7];从people类派生出teacher(教师)类,添加属性:职务char principalship[11]、部门char department[E21]。从student类中派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacher adviser;从graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。类之间的关系如图7—1所示。

三、实验步骤

1.编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:

19

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

图7-1 实验任务的类图

error C2248:’age’:cannot access private member declared in class’Animal’ error C2248:’age’:cannot access private member declared in class’Animal’ 把age改为公有成员变量后重新编译就可以了。程序名:lab7—1.cpp。

2.编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7—2.cpp。 3.用debug功能跟踪程序lab7—2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。

4.编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名:lab7—3.cpp。

编译成功后,把vehicle设置为非虚基类,再编译一次,此时系统报错,无法编译成功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。

20

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

实验八 多态性

(2学时)

一、实验目的

1.掌握运算符重载的方法。

2.学习使用虚函数实现动态多态性。

二、实验任务

1.定义Point类,有坐标—x,—y两个成员变量;对Point类重载“++”(自增)、 “--”(自减)运算符,实现对坐标值的改变。

2.定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。

3.(选做)对实验六中的people类重载“一一”运算符和“:”运算符,“:=”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。

三、实验步骤

1.编写程序定义Point类,在类中定义整型的私有成员变量—x、—Y,定义成员函数Point& operator++();Point operator++(int);以实现对Point类重载“++”(自增)运算符,定义成员函数Point&operator--();Point operator--(int);以实现对Point类重载“一一”(自减)运算符,实现对坐标值的改变。程序名:lab8—1.cpp。

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

21

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

实验九 异常处理

(2学时)

一、实验目的

1.正确理解C++的异常处理机制。 2.学习异常处理的定义和执行过程。

二、实验任务

定义一个异常类CException,有成员函数Reason(),用来显示异常的类型。在子函数中触发异常,在主程序中处理异常,观察程序的执行流程。

三、实验步骤

编写程序lab9_1.cpp。在CException类的成员函数Reason()中用cout显示异常的类型,在函数fnl()中用throw语句触发异常,在主函数的try模块中调用fnl(),在catch模块中捕获异常。

22

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

实验十 Windows应用程序框架

(2学时)

一、实验目的

简单了解Windows程序设计。

二、实验任务

练习使用VC++的Appwizard(应用程序向导)生成一个最简单的Windows应用程序。

三、实验步骤

1.创建一个项目

(1)单击File菜单中的New选项,显示New(新建)对话框(如图1-1所示)。

(2)在Project(项目)选项卡中,选择MFC AppWizard(exe)。在Location(位置)文本框中指定一个路径d:\c++lab,在Preject Name(项目名称)文本框中为项目输入一个名字lab10-1,单击OK。

2.在出现的对话框中选择Miltiple Document、Document/View Architecture support、中文[中国],单击Next按钮。

3.在选择提供项目所需要的数据库支持种类时,选择None,不使用数据库,单击Next按钮。

4.设置程序的OLE和ActiveX支持类型,选择None,单击Next按钮。 5.在设置用户界面特征的对话框中,不做任何改变,单击Next按钮。 6.设置使用MFC库的方式,接受缺省的选项。 7.设置类和文件名,不做任何修改。

8.单击Finish(完成)按钮后,AppWizard显示一个摘要表,其中列出了所选的项目 特征。单击OK创建项目。 9.编译、运行labl0-1。

23


面向对象程序设计实验指导书(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:推行建设行政执法责任制工作情况汇报

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: