实验三 继承和类的派生

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三类的派生与继承

实验目的和要求

1 掌握继承和派生类的概念。

2 掌握派生类对基类的继承。

3 了解多继承。

实验内容

1. 编写一个程序,其中有一个书类book,其数据包括书号、书名、定价、出版社及出版时间:有一个作者类author,其数据成员包括姓名、年龄和写作时间,每个类都有相应的输入输出。以此两个为基类派生出图书查询卡card,并增加一个数据成员表示书籍系统名称,以及一个可以显示系统名称、书名、作者、作者年龄、出版时间、出版社和定价等数据的函数。

2. 设计一个大学的类系统,学校中有学生、教师,每种人员都有自己的特性,他们之间有相同的地方(以 person 类为基类,有姓名、编号),又有各自不同的特性(学生:专业、平均成绩;教师:职称、工资)。利用继承机制定义这个系统中的各个类,要求输入姓名等信息后再将这些信息输出。

实验原理:

1、继承与派生的概念及目的;

2、派生类大的声明方式、构成以及访问属性;

3、多继承的声明方法;

4、含有子对象的派生类的声明方式以及执行顺序;

实验内容一:

编程思想:

编程过程中考虑到过程较为复杂,我采用了分步、分块编程的方法,使得程序的功能逐步地实现。程序的基本框架如下:

第一步:因为考虑到book和author中都需要输入和时间有关的变量,所以将时间作为它们共同的基类,向它们传递时间变量的属性。Time类是一个比较基本的类的建立,在第一章中已经可以较为熟练地掌握。

第二步:实现书籍基本信息的输入和输出。此步中用到了继承,因为此类中需要建立出版时间,所以建立了一个Time类的对象:bpubt。在Book类中设计数据的输入输出函数,并在

输入输出函数中通过对象bpubt调用时间类的输入输出函数。编程过程中,Book类的功能通过以下代码实现,并检查运行结果无误。

#include

#include

#include

using namespace std;

class Time

{private:

int day;

int month;

int year;

public:

Time(int d=0,int m=0,int y=0)

{ day=d;

month=m;

year=y;

}

void setin()

{

cout<<"请输入时间:"<>day>>month>>year;

}

void setout()

{cout<

};

class book:public Time

{private:

float bp;

int bnum;

string bname;

string bpubl;

Time bpubt;

public:

void setin() {cout<<"请输入书的简单情况:"<

cin>>bnum>>bname>>bp>>bpubl; bpubt.setin();}

void setout()

{cout<

cout<

cout<

cout<

bpubt.setout();}

};

int main()

{

book book1;

book1.setin();

book1.setout();

system("PAUSE");

return 0;

}

运行结果:

在编写过程中遇到字符串的输入问题,通过调用头文件#include得以解决。

第三步:在编写好Book类以及处理好Book类与Time类之间的关系后,author类的处理就变得比较简单。同样,设计好author类的输入输出函数,在输入输出函数中通过建立Time 类writime来调用Time类的输入输出函数。

第四步:建立card类,其中包含card类自身的输入输出函数。同时,建立card类和Book 类、author类之间的继承、派生关系。在card类中,通过建立Book和author类来实现对于这两个基类的输入输出函数的调用。

第五步:建立主函数main(),在主函数中建立card类的对象,并实现对于对象输入输出函数的调用。

程序代码:

#include

#include

#include

using namespace std;

class Time

{private:

int day;

int month;

int year;

public:

Time(int d=0,int m=0,int y=0)

{ day=d;

month=m;

year=y;

}

void setin()

{

cout<<"请输入时间:"<>day>>month>>year;

}

void setout()

{cout<

};

class book:public Time

{private:

float bp;

int bnum;

string bname;

string bpubl;

Time bpubt;

public:

void setin()

{cout<<"请输入书的简单情况:"<

cin>>bnum>>bname>>bp>>bpubl; bpubt.setin();}

void setout()

{cout<<"书号:"<

cout<<"书名:"<

cout<<"出版社"<

cout<<"出版时间:";

bpubt.setout();}

};

class author:public Time

{private:

string aname;

int age;

Time writime;

public:

void setin()

{cout<<"请输入作者的基本情况:"<

cin>>aname>>age;

writime.setin();}

void setout()

{

cout<<"作者名字:"<

cout<<"写作时间:";

writime.setout();}

};

class card:public book,public author {private:

string system;

book book1;

author author1;

public:

void setin()

{

cout<<"输入系统名称:"<

cin>>system;

book1.setin();

author1.setin();

}

void setout()

{cout<<"系统名称:"<

author1.setout();

相关文档
最新文档