




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 验 报 告专业:计算机科学与技术 班级: 学号: 姓名: 课程名称:C+面向对象程序设计教程 201 -201 学年度 第 学期 课程类别:必修 实验时间:201 年 月 日实验名称:实验五 多态性、继承和派生实验目的和要求:目的:(1) 学习定义和使用类的继承关系,定义派生类;(2) 熟悉不同继承方式下对基类成员的访问控制;(3) 掌握在派生类中初始化基类成员的方法;(4) 掌握运算符重载的基本方法;(5) 掌握c+函数的重载机制;(6) 掌握使用虚函数实现动态多样性。要求:(7) 认真调试程序;(8) 认真书写实验报告,并对结果作分析。实验软硬件要求:计算机一台 VC+6.0开发环境实验内容、实验过程、所遇问题及其解决方法(1) 定义一个人员类Person,包括姓名、编号、性别等数据成员和用于输入、输出的成员函数,在此基础上派生出学生类Student类(增加成绩)和教师类Teacher(增加教龄),并实现对学生和教师信息的输入和输出。(2) 定义一个抽象类Shape,包含纯虚函数Area()(用来计算面积)和SetShape()(用来重设形状大小)。然后派生出三角形类Triangle类、矩形Rect类、圆Circle类,分别求其面积。最后定义一个Total_Area类,计算这几个形状的面积之和,各形状的数据通过Total_Area类的构造函数或成员函数来设置。编写一个完整的程序。(教材P160)实验总结及心得体会:通过本次实验,我理解了类之间的继承关系,熟悉了不同继承方式下对基类成员的访问控制,掌握了在派生类中初始化基类成员的方法,掌握了运算符重载的基本方法和C+函数的重载机制以及使用虚函数实现动态多样性。评定成绩: 批阅教师: 年 月 日附录:实验源程序及实验结果(1) 定义一个人员类Person,包括姓名、编号、性别等数据成员和用于输入、输出的成员函数,在此基础上派生出学生类Student类(增加成绩)和教师类Teacher(增加教龄),并实现对学生和教师信息的输入和输出。/Person.h#include /编译预处理命令using namespace std; /使用命名空间std#ifndef PERSON_H#define PERSON_Hclass Person /声明类Personprotected:char name18; /姓名int num; /编号char sex3; /性别public:char na18,se3;int nu;Person() /构造函数void Imput() /输入信息 coutna;coutnu;coutse; void Set() /设置信息 strcpy(name,na);num=nu;strcpy(sex,se); void Show() const; /显示信息函数定义声明;#endif/Student.h:#include /编译预处理命令using namespace std; /使用命名空间std#ifndef STUDENT_H#define STUDENT_Hclass Student:public Person /声明类Studentprotected:double record; /成绩public:double re;Student() /构造函数void Imput()cout请输入学生的信息:endl;Person:Imput(); /调用基类成员函数Imput()coutre;void Set() Person:Set(); /调用基类成员函数Set()record=re;void Show() const;#endif/Teacher.h:#include /编译预处理命令using namespace std; /使用命名空间std#ifndef TEACHER_H#define TEACHER_Hclass Teacher:public Personprotected:int age; /教龄public:int ag;Teacher() /构造函数void Imput()coutendl请输入教师的信息:endl;Person:Imput(); /调用基类成员函数Imput()coutag;void Set()Person:Set(); /调用基类成员函数Set()age=ag;void Show() const;#endif/Person.cpp:#includePerson.hvoid Person:Show() const /显示信息函数定义cout姓名:nameendl;cout编号:numendl;cout性别:sexendl;/Student.cpp: #includePerson.h#includeStudent.hvoid Student:Show() constcoutendl学生的信息为:endl;Person:Show(); /调用基类成员函数Show()cout成绩:recordendlendl;/Teacher.cpp:#includePerson.h#includeTeacher.hvoid Teacher:Show() constcout教师的信息为:endl;Person:Show(); /调用基类成员函数Show()cout教龄:ageendlendl;/main.cpp:#includePerson.h#includeStudent.h#includeTeacher.hint main()Student s; /定义对象ss.Imput(); /输入学生信息s.Set(); /设置学生信息Teacher t; /定义对象tt.Imput(); /输入教师信息t.Set(); /设置教师信息s.Show(); /显示学生信息t.Show(); /显示教师信息system(PAUSE);return 0;(2) 定义一个抽象类Shape,包含纯虚函数Area()(用来计算面积)和SetShape()(用来重设形状大小)。然后派生出三角形类Triangle类、矩形Rect类、圆Circle类,分别求其面积。最后定义一个Total_Area类,计算这几个形状的面积之和,各形状的数据通过Total_Area类的构造函数或成员函数来设置。编写一个完整的程序。(教材P160)/Shape.h:#ifndef SHAPE_H#define SHAPE_Hclass Shape /声明抽像类Shapepublic:virtual double Area()=0; /纯虚函数Area()virtual void SetShape()=0; /纯虚函数SetShape();#endif/Triangle.h#ifndef TRIANGLE_H#define TRIANGLE_H#includeShape.hclass Triangle:public Shape /声明三角形类Triangleprivate:double E; /底double H; /高public:Triangle() /参数为空的构造函数Triangle(double e,double h):E(e),H(h)double Area()return 0.5*E*H; /返回三角形面积void SetShape(); /重设三角形的大小;#endif/Rect.h#ifndef RECT_H#define RECT_H#includeShape.hclass Rect:public Shape /声明矩形类Rectprivate:double L; /长double W; /宽public:Rect() /参数为空的构造函数Rect(double l,double w):L(l),W(w)double Area()return L*W; /返回矩形面积void SetShape(); /重设矩形的大小;#endif/Circle.h#ifndef CIRCLE_H#define CIRCLE_H#includeShape.hclass Circle:public Shape /声明圆类Circleprivate:double R; /半径public:Circle() /参数为空的构造函数Circle(double r):R(r)double Area()return 3.1415926*R*R; /返回圆的面积void SetShape(); /重设圆的大小;#endif/Total_Area.h#include /编译预处理命令#includeTriangle.h#includeRect.h#includeCircle.husing namespace std; /使用命名空间#ifndef TOTAL_AREA_H#define TOTAL_AREA_Hclass Total_Area /声明类Total_Areaprivate:Shape *a3; /定义抽象类Shape类型的数组指针public:Total_Area(double Te=0,double Th=0,double Rl=0,double Rw=0,double Cr=0)/分配空间 a0=new Triangle(Te,Th);a1=new Rect(Rl,Rw);a2=new Circle(Cr);Total_Area() /析构函数 delete a0;delete a1;delete a2;void SetShape() /设置形状的大小 a0-SetShape();a1-SetShape();a2-SetShape();double GetTriangle()return a0-Area();double GetRect()return a1-Area();double GetCircle()return a2-Area();double GetArea(); /返回三个形状的面积和;#endif/Triangle.cpp#includeTriangle.h#include /编译预处理命令using namespace std; /使用命名空间void Triangle:SetShape()coutEH;/Rect.cpp#includeRect.h#include /编译预处理命令using namespace std; /使用命名空间void Rect:SetShape() coutLW; /Circle.cpp#includeCircle.h#include /编译预处理命令using namespace std; /使用命名空间void Circle:SetShape()coutR;/ Total_Area.cpp#includeTotal_Area.hdouble Total_Area:GetArea()return a0-Area()+a1-Area()+a2-Area();/main.cpp#include /编译预处理命令#includeShape.h#includeTriangle.h#includeRect.h#includeCircle.h#includeTotal_Area.husing namespace std; /使用命名空间int main() /主函数main()cout输入的三角形的底和高,矩形的长和宽,圆的半径为:2和4,3和5,6endl;Total_Area s(2,4,3,5,6); /定义对象scout这个三角形的面积为:s.GetTriangle()endl;cout这个矩形的面积为:s.Ge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间管理培训课程
- 时间的测量教学课件
- 创意美术夏季课件
- 二零二五年度建筑地基基础工程监理合同
- 2025版电子产品生产企业员工受伤赔偿协议
- 二零二五年度实体书店转让合同样本
- 2025版集装箱清洗消毒与保养服务合同
- 二零二五年度企业员工零用金补助与报销协议
- 二零二五年度木材现货交易市场准入合同
- 2025版青岛家居装饰装修工程临时设施租赁合同
- 2025年秋招:新媒体运营笔试题目及答案
- 工作总结及工作思路(输电运维班)
- 2025内蒙古森工集团招聘工勤技能人员3100人笔试参考题库附带答案详解析集合
- 登销记以及运统46系统运用21课件
- 动物育种学第四章生产性能测定
- DB32T 4252-2021 民用建筑燃气安全规范
- 事务所合同管理制度
- 最新五年级上册音乐教案
- 河蟹的营养需要与饲料优化技术
- GHTF—质量管理体系--过程验证指南中文版
- 数学用表A4(锐角三角函数)
评论
0/150
提交评论