实验三 继承和类的派生
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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<<"请输入时间:"<
}
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<<"请输入时间:"< } 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();