欢迎来到天天文库
浏览记录
ID:39615492
大小:49.50 KB
页数:4页
时间:2019-07-07
《实验5派生与继承》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验5派生与继承一、实验目的理解继承思想,掌握继承的语法。n体会不同继承方式下派生类对基类成员的访问权限n掌握派生类中构造函数和析构函数的定义形式,理解其与基类构造函数和析构函数的关系与调用;n掌握派生类与基类同名函数的调用方法n理解继承体系中的赋值兼容性原则n掌握多继承的语法形式,理解虚继承关系。二、实验内容1.设计一个学生和教师类,学生数据有编号、姓名、班级和成绩;教师数据有编号、姓名、职称和部门;要求:运用继承的思想实现相关功能:对学生和教师的数据进行输入和显示,类中包括各种构造函数,思考如何在派生类的构造函数中初始化基类的成员。2.设计球类,用组合及继承包含点,在各个类中添加构造
2、函数和show方法,并能计算球的表面积和体积。1)按组合关系构造一个球类Ball,包含一个空间中的点(x,y,z)。2)按继承构造一个球类Sphere,构成三级单继承关系。3)按组合和继承关系构造一个非均匀的球体类,其中包括一个几何中心和物理重心3.编写一个程序,实现字符串的相关操作。要求:在已有简单串类myString的基础上派生字符串类String1,类中包含返回字符串长度功能,并能使用运算符实现字符串连接与比较(不用库函数);设计一个具有编辑功能的串类String2,它从String1类派生而来。成员函数能够在在字符串指定位置处实现如下操作:插入字符串、替换和删除某个字符,并能查找
3、子串。设计UML图见下myString+myString(char*=0)+myString(constmyString&)+~myString()+set(char*):void+getStr():char*+print():void#pStr:char*String1+getLen():int+opertor+(String1&):String1+opertor=(String1&):String1&+operator>(String1&):bool#len:intString2+insert(char*):void+replace(char):void+delete(char):b
4、ool+find(constchar*):int1.综合性的实验,设计数组类族。要求编写的程序涉及到C++的许多知识点,如类的定义,动态分配内存,构造函数,派生,虚基类等。实验内容给出的是一个完整的程序,4个题目实际是类等级。同学也可以在此基础上发挥增加新的内容。1)定义一个基类MyArray,基类中可以存放一组数组。编写构造函数,析构函数及其它函数,实现动态分配内存,释放内存和数据输入输出等功能。并进行调试。2)定义一个类averarray继承自myarray,在类中求数组的平均值,并输出。进行调试。3)定义一个类revarray继承自myarray,使数组按反序存放,并输出。进行调试
5、。4)定义一个类Safearray继承自averarray和revarray,并保证访问数组不会越界。在继承过程中声明为虚基类,体会虚基类在解决二义性中的问题中的作用。调试中可以试一试不用虚基类出现的问题。5.编写一个程序实现小型公司的工资管理。测试各个类,输出不同人员的工资。该公司主要有4类人员:经理、兼职技术人员、销售员和销售经理。要求存储这些人的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元,兼职技术人员按每小时100元领取月薪,销售员按当月销售额的4%提成,销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门
6、当月销售总额的5‰。三.问答题(提交书面作业)1.阅读程序,回答问题#includeusingnamespacestd;classA{public:voidf1();A(){i1=10;j1=11;}protected:intj1;private:inti1;};classB:privateA{public:voidf2();B(){i2=20;j2=21;}protected:intj2;private:inti2;};classC:publicB{public:voidf3();C(){i3=30;j3=31;}protected:intj3;private:in
7、ti3;};回答下列问题:a)派生类B中成员函数f2()能否访问基类A中的成员f1()、i1和j1?b)派生类B的对象b能否访问基类A中的成员f1()、i1和j1?c)派生类C中成员函数f3()能否访问直接基类B中的成员f2()、i2和j2?能否访问间接基类A中的成员f1()、j1和i1?d)派生类C的对象c能否访问直接基类B中的成员f2()、i2和j2?能否访问间接基类A中的成员f1()、j1和i1?2.设计题1)给出编程题目2的
此文档下载收益归作者所有