实验五:派生类和继承(二)
更新时间:2023-07-17 08:35:01 阅读量: 实用文档 文档下载
- 派生类的继承方式推荐度:
- 相关推荐
金山学院C++课程实验报告
福建农林大学金山学院实验报告
系(教研室):信息与机电工程系 专业:计算机科学与技术 年级: 实验课程:面向对象程序设计 姓名: 学号: 实验室号
计算机号 实验时间: 指导教师签字: 成绩:
实验5 派生类和继承(二)
一、实验目的和要求
(1)掌握派生类的声明与定义方法,进一步理解类的继承的概念,能够定义和使用类的继承关系。
(2)熟悉公有派生和私有派生的访问特性。
(3)了解虚基类在解决二义性问题中的作用。
二、实验内容和原理
1、试写出所能想到的所有形状(包括二维的和三维的),生成一个形状层次类结构。生成的层次结构以Shape作为基类,并由此派生出TwoDimShape类和ThreeDimShape类。它们的派生类是不同形状类,定义层次结构中的每一个类,并用函数main()进行测试。
2、设计一个学生类CStudent。数据成员包括学生姓名,性别,年龄,学号,已修学分。成员函数包括输入输出或修改学生姓名、学号,增加已修学分。设计一个教师类CTeacher。数据成员包括教师姓名,性别,年龄,职称,担任课程。成员函数包括输入输出或修改教师姓名、年龄,更改职称等。以CStudent为基类派生子类CGraduateStudent。增加数据成员导师姓名、研究生已发表论文的数目;成员函数为增加已发表论文数目。最后,用函数main()函数进行测试。(提示:可为CStudent类和CTeacher类创建一个公共基类)
三、实验环境
1. 硬件:PC机;
2. 软件:Windows操作系统、Visual C++ 6.0
四、算法描述及实验步骤
1.(1)在VC环境下根据题目写出类
(2)检查程序有无错误(包括语法错误和逻辑错误),有则改之。
(3)编译和连接。
类之间的关系:
Shape
threeDimShape
三角形 正方形 正方体 球
金山学院C++课程实验报告
本题的代码如下:
#include<iostream.h>
const double pai=3.14;
class Shape
{public:double area()const{return 0.0;}
void display(){};
};
class twoDimShape:virtual public Shape
{};
class threeDimShape:virtual public Shape
{};
//三角形类
class Triangle:public twoDimShape
{public:Triangle(double myg,double myd){gao=myg;di=myd;}
double area ()const {return (di*gao)/2;}
void display(){cout<<"Area of Square is";}
private:double gao,di;
};
//正方形类
class Square:public twoDimShape
{public:Square(double myb){bianchang =myb;}
double area ()const {return bianchang*bianchang;}
void display(){cout<<"Area of Square is";}
private:double bianchang;
};
//正方体
class Squarer:public threeDimShape
{public:Squarer(double myb){bianchang =myb;}
double area ()const {return bianchang*bianchang*bianchang;}
void display(){cout<<"Superficial area of Cone is";}
private:double bianchang;
};
//球
class Ball:public threeDimShape
{public:Ball(double myr){r =myr;}
double area ()const {return (4*pai*r*r*r)/3;}
void display(){cout<<"Superficial area of Ball is";}
private:double r;
};
int main()
{ double a,b,c,d,e;
cout<<"请输入三角形的高和底"<<endl;
cin>>a>>b;
Triangle t(a,b);
double area;
area=t.area();
金山学院C++课程实验报告
t.display();
cout<<area<<endl;
//
cout<<"请输入正方形的边长"<<endl;
cin>>c;
Square s(c);
area=s.area();
s.display();
cout<<area<<endl;
//
cout<<"请输入正方体的边长"<<endl;
cin>>d;
Squarer sr(d);
area=sr.area();
sr.display();
cout<<area<<endl;
//
cout<<"请输入球的半径"<<endl;
cin>>e;
Ball br(e);
area=br.area();
br.display();
cout<<area<<endl;
return 0;
}
(4)运行程序,,分析结果。
2.(1)在VC环境下根据题目写出类
(2)检查程序有无错误(包括语法错误和逻辑错误),有则改之。
(3)编译和连接。
本题的代码如下:
#include <iostream>
#include <string>
using namespace std;
class Person
{public:
void display()
{cout<<"姓名:"<<name<<endl;
cout<<"性别:"<<sex<<endl;
cout<<"年龄:"<<age<<endl;
}
protected:string name;
string sex;
int age;
};
金山学院C++课程实验报告
class CTeacher:public Person
{public:
void getInfo()
{
cin>>name>>sex>>age>>title>>lesson;cout<<endl;}
void newname(string n){name =n;}
void newage(int m){age=m;}
void mewtitle(string l){title=l;}
void display()
{Person::display();
cout<<"职称:"<<title<<endl;
cout<<"担任课程:"<<lesson<<endl;
}
protected:string title;
string lesson;
};
class CStudent: public Person
{public :
void getInfo()
{
cin>>name>>sex>>age>>num>>depa>>xvefen;cout<<endl;
}
void newxingming(string n)
{name=n;}
void newmun(int m)
{num=m;}
void xvefenadd(int c)
{xvefen+=c;}
void display()
{Person::display();
cout<<"学号:"<<num<<endl;
cout<<"系别:"<<depa<<endl;
cout<<"学分:"<<xvefen<<endl;}
protected:int num; string depa;int xvefen;
};
class CGraduateStudent:public CStudent
{
public:
void getInfo()
{
cin>>name>>sex>>age>>num>>depa>>xvefen>>tname>>lunwen;cout<<endl;} void lunwenadd(int c)
{lunwen+=c;}
void display()
{CStudent::display();
cout<<"导师:"<<tname<<endl;
金山学院C++课程实验报告
cout<<"已发表论文的数目:"<<lunwen<<endl;}
protected:
string tname;int lunwen;
};
int main()
{cout<<"请输入教师姓名,性别,年龄,职称,担任课程"<<endl;
CTeacher teac;
teac.getInfo();
cout<<"请输入学生姓名,性别,年龄,学号,专业,已修学分"<<endl;
CStudent stud; stud.getInfo();
cout<<"请输入研究生姓名,性别,年龄,学号,专业,已修学分,导师姓名、研究生已发表论文的数目"<<endl;
CGraduateStudent grad;
grad.getInfo();
cout<<"\n教师的有关数据如下:"<<endl;
teac.display();
cout<<"\n学生的有关数据如下:"<<endl;
stud.display();
cout<<"\n研究生的有关数据如下:"<<endl;
grad.display();
cout<<"请问是否增加学生的学分?(Y/N)"<<endl;
char xuanze;cin>>xuanze;
if(xuanze=='Y')
{cout<<"请输入增加的学分"<<endl;
int newaddxvefen;cin>>newaddxvefen;
stud.xvefenadd(newaddxvefen);
cout<<"\n学生的更新后有关数据如下:"<<endl;
stud.display();
}
cout<<"请问是否增加研究生的论文数目?(Y/N)"<<endl;
cin>>xuanze;
if(xuanze=='Y')
{cout<<"请输入增加的论文数目"<<endl;
int newaddlunwen;cin>>newaddlunwen;
grad.lunwenadd(newaddlunwen);
cout<<"\n研究生的更新后有关数据如下:"<<endl;
grad.display();
}
return 0;
}
(4)运行程序,,分析结果。
五、调试过程
金山学院C++课程实验报告
1.
2.
六、实验结果
1.
2.
金山学院C++课程实验报告
七、总结
1.考察继承的应用。
2.考察了继承和派生类的使用,由一个people类引出多个派生类, 懂得在函数中定义输入函数的方法。
正在阅读:
实验五:派生类和继承(二)07-17
CET4核心700词汇05-06
2022年延安大学化学与化工学院707教育学专业基础综合之中国教育04-07
人解白皮书答案(1)12-08
一年四季的声音作文400字06-23
我的家乡三门峡作文500字07-11
《再别康桥》教学反思10-10
JSP+SQL学生考试成绩分析论文07-18
商品销售合同书范本(合同范本)04-08
江西省南昌市八一中学、洪都中学、麻丘中学联考2018-2019学年高二上学期期末政治试卷 Word版含解析 (1)08-25
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 派生
- 继承
- 实验
- 三年级上学期毛笔书法教学计划
- 东方时代环球时事解读2013年12月20日
- 兰大《接口与通讯技术》17春平时作业3
- 标准仓单回购业务协议书(网络合同)
- 2010下半年系统集成项目管理工程师真题
- ZEMAX-光学设计实例
- 二年级(下册)《生命生态安全》计划.教案
- 2021高中语文老师工作计划(新版)
- 高华证券-全球经济周评:财政整顿:依然有损增长-120328
- 2012年河南专升本公共英语核心词汇
- 【好卷速递】山东省聊城市2012届高三第一次高考模拟考试试题(word版)文综
- 思想政治教育学原理试题(卷)3与参考答案解析
- 秋冬季疫情防控应急管理预案
- 加强师德修养学习心得
- 四 川 省 劳 动 厅川劳险【1998】8号
- 金融工程—第二章 基本分析方法
- 风险评价中概念性模型
- 第11章逻辑代数初步_中职_数学第三册
- Ka频段固态功放设计方案
- (完整版)就业指导期末考试经典试题及答案