您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > C++程序设计实验四-类的继承与派生
台州学院电子与信息工程学院实验报告班级学号姓名吴前斌同组实验课程:C++程序设计实验项目:类的继承与派生实验日期:2019年5月5日成绩批阅日期1主要内容(参考)预习简要(可选)四、实验内容、方法、步骤一、实验目的和任务五、实验数据记录与处理二、实验原理六、实验结果分析、思考、心得三、实验器材七、原始数据一、实验目的1.掌握继承与派生的关系及方法;2.在派生类构造函数中初始化基类成员;3.多重继承的方法。二、实验内容1.定义1个CPerson类,其属性有:姓名、性别和年龄。2.从CPerson类派生出CStudent类,增加属性:学号、入学时间和入学成绩;3.从CPerson类派生出CTeacher类,添加属性:职务、部门和工作时间;4.由CStudent类派生出CGraduate类,添加属性:研究方向和导师;5.由CGraduate和CTeacher共同派生出在职研究生类CGradonWork6.对上述类分别定义其中的构造函数和输出函数,并在主函数中定义对象进行测试,测试的代码大致如下:CGradonWorkgradonWork(tzcer,男,33,15,2003,335,computer,tangmin,jsj,sxxy,2002-8);gradonWork.Print();其中CGradonWork的构造函数参数分别对应的属性是一个在职的研究生对象,其姓名为tzcer,性别为男,33岁,学号15,2003年读在职,入学成绩335,就读计算机方向,其导师tangmin,同时tzcer也是sxxy部门,jsj专业的老师,2002-8月入职。要求记录输出信息并说明实验步骤和解决方法!7、问题:何为继承二义性,在本实验中哪个地方存在二义性,你是如何解决的?电子与信息工程学院实验报告28、定义形状类,其中基类为点类,圆类继承点类,圆柱体类继承圆类,计算面积、体积。9、建立一个建筑物类的层次体系。其中,基类building包括保护数据成员name(建筑物名称)、floors(层数)和areas(总面积),由building类派生住宅类house和办公楼类office;住宅类house包括私有数据成员rooms(房间数)和balcony(阳台数);办公楼类office包括私有数据成员offices(办公室数)和meetingrooms(会议室数)。住宅类house和办公楼类office都含有构造函数和print函数,以分别用于对数据成员的初始化和输出。在主函数中,实例化house类和office类对象并且将其数据输出。10、某校每位学生都要学习英语、语文、数学三门公共课程以及不同的专业课程。会计学专业要学习会计学和经济学两门课程,化学专业要学习有机化学和化学分析两门课程。编程序管理学生成绩,计算公共课的总分和平均分,以及所有课程的总成绩。电子与信息工程学院实验报告2数据记录:1、#includeiostream#includestringusingnamespacestd;classCDate{public:intx,n,e;CDate();CDate(intx,intn,inte):x(x),n(n),e(e){}};classCPerson{public:stringname,sex;intage;CPerson();CPerson(stringname,intage,stringsex):name(name),age(age),sex(sex){}voidPrint(){coutnameagesexendl;}};classCStudent:virtualpublicCPerson{public:stringid;CDateschool;intgrade;CStudent();CStudent(stringname,intage,stringsex,stringid,CDateschool,intgrade):CPerson(name,age,sex),id(id),school(school),grade(grade){}voidPrint(){coutnameagesexidschool.x-school.n-school.egradeendl;}};classCTeacher:virtualpublicCPerson{public:stringduty,depart;CDatework;CTeacher();CTeacher(stringname,intage,stringsex,CDatework,stringduty,stringdepart):CPerson(name,age,sex),duty(duty),depart(depart),work(work){}电子与信息工程学院实验报告2voidPrint(){coutnameagesexdutydepartwork.x-work.n-work.eendl;}};classCGraduate:publicCStudent{public:stringstudy,tutor;CGraduate();CGraduate(stringname,intage,stringsex,stringid,CDateschool,intgrade,stringstudy,stringtutor):CStudent(name,age,sex,id,school,grade),CPerson(name,age,sex),study(study),tutor(tutor){}voidPrint(){coutnameagesexidschool.x-school.n-school.egradestudytutorendl;}};classCGradOnWork:publicCGraduate,publicCTeacher{public:stringname,sex;intage;CGradOnWork();CGradOnWork(stringname,intage,stringsex,stringduty,stringdepart,CDatework,stringid,CDateschool,intgrade,stringstudy,stringtutor):CTeacher(name,age,sex,work,duty,depart),CGraduate(name,age,sex,id,school,grade,study,tutor),CPerson(name,age,sex),name(name),age(age),sex(sex){}电子与信息工程学院实验报告2voidPrint(){coutnameagesexdutydepartwork.x-work.n-work.eidschool.x-school.n-school.egradestudytutorendl;}};intmain(){CGradonWorkgradonWork(tzcer,男,33,15,2003,335,computer,tangmin,jsj,sxxy,2002-8);s1.Print();s1.CTeacher::Print();s1.CGraduate::Print();s1.CStudent::Print();s1.CPerson::Print();}8、#includeiostream#includecmathusingnamespacestd;classPoint{protected:doublex,y;public:Point(){x=0;y=0;}Point(doublex0,doubley0){x=x0;y=y0;}doubleget_x(){returnx;}doubleget_y(){returny;}friendostream&operator(ostream&out,Point&d);};ostream&operator(ostream&out,Point&d){returnoutPoint:(d.x,d.y)endl;}电子与信息工程学院实验报告3classCircle:publicPoint{protected:doubler;public:Circle(){r=0;}Circle(doubler0):r(r0){}voidset_r(doubler1){r=r1;}doubleget_r(){returnr;}doublearea(){return3.14159*r*r;}friendostream&operator(ostream&out,Circle&r);};ostream&operator(ostream&out,Circle&r){returnoutr:r.get_r()endlarea:r.area()endl;}classCylinder:publicCircle{private:doubleh;public:Cylinder(){h=0;}Cylinder(doubler0,doubleh0):Circle(r0),h(h0){}voidset_h(doubleh1){h=h1;}doubleget_h(){returnh;}doublearea(){return2*3.14159*r*h+2*3.14159*r*r;}doublevolume(){returnCircle::area()*h;}friendostream&operator(ostream&out,Cylinder&h);};ostream&operator(ostream&out,Cylinder&h){returnouth:h.get_h()endlarea:h.area()endlvolume:h.volume()endl;}intmain(){Pointps(-2,5);coutps;Circleo(2);couto;Cylinderh(2,4);couth;system(pause);return0;}电子与信息工程学院实验报告4运行的效果如下:9、#includeiostream#includestringusingnamespacestd;classbuilding{protected:stringname;intfloors;floatareas;public:building(string,int,float);voidprint();};building::building(stringq,intm,floats){name=q;floors=m;areas=s;}voidbuilding::print(){coutname:namefloors:floorsarea:areasendl;}classhouse:publicbuilding{public:house(stringq,intm,floats,inti,intj):building(q,m,s){rooms=i;balcony=j;}voidprint();private:introoms;intbalcony;};电子与信息工程学院实验报告5voidhouse::print(){coutname:namefloors:floorsareas:areasrooms:roomsbalcony:balconyendl;}classoffice
本文标题:C++程序设计实验四-类的继承与派生
链接地址:https://www.777doc.com/doc-7227721 .html