实验五:派生类和继承(二)

更新时间: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类引出多个派生类, 懂得在函数中定义输入函数的方法。

本文来源:https://www.bwwdw.com/article/xla1.html

Top