新的继承与派生

上传人:第*** 文档编号:34064335 上传时间:2018-02-20 格式:DOC 页数:8 大小:62.50KB
返回 下载 相关 举报
新的继承与派生_第1页
第1页 / 共8页
新的继承与派生_第2页
第2页 / 共8页
新的继承与派生_第3页
第3页 / 共8页
新的继承与派生_第4页
第4页 / 共8页
新的继承与派生_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《新的继承与派生》由会员分享,可在线阅读,更多相关《新的继承与派生(8页珍藏版)》请在金锄头文库上搜索。

1、实验四继承与派生(二) (多重继承与虚基类)班级:计算机 1101 姓名:* 学号:2011*【实验目的】1.了解多重继承的概念。2.理解为了避免同一基类出现多个重复的副本而采用的虚基类概念和虚拟继承。3.学习利用虚基类解决二义性问题。【实验内容】设计一个用于人事管理的 people(人员类)基类。考虑到通用性,仅只抽象出所有类型人员都具有的属性:编号、姓名、性别、出生日期、身份证号等;从 people 累类派生出student(学生类) ,并添加属性:班号 classno;从 people 类派生出 teacher(教师类) ,并添加属性:职务 pricipalship、部门 departm

2、ent;从 student 类在派生出 graduate(研究生类) ,添加属性:专业 subject、导师 adviser(teacher 类) ;最后从教师类和研究生类一起派生出TA(助教类) 。设计师应注意虚基类的使用,注意重载相应的成员函数,然后测试这些类。【UML 图 】Date#d_year: int#d_month: int#d_day: int+Date(year: int, month: int, day: int)+Date(d: Date &)+show(): voidpeople#m_no: long#m_name: string#m_sex: string#m_dat

3、e: Date#m_iddent_no: string+people(no: long, name: string, sex: string, date: Date, ident_no: string, classno: string)+people(p: people &)+set(no: long, name: string, sex: string, date: Date, ident_no: string, classno: string): void+set(p: people &): void+show(): voidstudent#s_classno: string+studen

4、t(p: people &, class: string)+student(s: student &)+show(): voidteacher#t_principalship: string#t_department: string+teacher(p: people &, principalship: string, department: string)+teacher(t: teacher &)+show(): voidgraduate#g_subject: string#g_adviser: string+graduate(s: student &, subject: string,

5、t: teacher &)+graduate(g: graduate &)+show(): voidTA1+TA(g: graduate &, t: teacher &)+TA(T: TA &)+show(): void【实验程序】#include#includeusing namespace std;class Dateprivate:int d_year;int d_month;int d_day;public:Date(int y=0,int m=0,int d=0):d_year(y),d_month(m),d_day(d)void set(int y,int m,int d)d_ye

6、ar=y;d_month=m;d_day=d;void show()cout出生日期: d_year-d_month-d_dayendl;class peopleprotected:Date m_date;long m_no;string m_ident_no;string m_name;string m_sex;public:people(long no,string name,string sex,string ident_no,Date date);people(people void set(long no,string name,string sex,string ident_no,

7、Date date);void set(people void show();people:people(long no,string name,string sex,string ident_no,Date date):m_date(date)m_no=no;m_name=name;m_sex=sex;m_ident_no=ident_no;people:people(people &p)m_no=p.m_no;m_name=p.m_name;m_sex=p.m_sex;m_ident_no=p.m_ident_no;m_date=p.m_date;void people:set(long

8、no,string name,string sex,string ident_no,Date date)m_no=no;m_name=name;m_sex=sex;m_ident_no=ident_no;m_date=date;void people:set(people &p)m_no=p.m_no;m_name=p.m_name;m_sex=p.m_sex;m_ident_no=p.m_ident_no;m_date=p.m_date;void people:show()cout序号:m_noendl;cout姓名:m_nameendl;cout性别:m_sexendl;cout系统编号:

9、m_ident_noendl;m_date.show();class student:virtual public peopleprotected:string s_classno;public:student(people /student(long no,string name,string sex,string ident_no,Date date,string classno):people(no,name,sex,ident_no,date)s_classno=classno;student(student void show();student:student(people &p,

10、string classno):people(p)s_classno=classno;student:student(student &s):people(s)s_classno=s.s_classno; void student:show()people:show();cout班号:s_classnoendl;class teacher:virtual public peopleprotected:string t_pricipleship;string t_department;public:friend class graduate;teacher(people /teacher(lon

11、g no,string name,string sex,string ident_no,Date date,string pricipleship,string department):people(no,name,sex,ident_no,date)t_pricipleship=pricipleship;t_department=department;teacher(teacher void show();teacher:teacher(people &p,string pricipleship,string department):people(p)t_pricipleship=prici

12、pleship;t_department=department;teacher:teacher(teacher &t):people(t)t_pricipleship=t.t_pricipleship;t_department=t.t_department;void teacher: show()people:show();cout职务:t_pricipleshipendl;cout部门:t_departmentendl;class graduate:public studentprotected:string g_subject;teacher g_adviser;public:gradua

13、te(student /graduate(long no,string name,string sex,string ident_no,Date date,string classno,string subject,teacher adviser):people(no,name,sex,ident_no,date),student(no,name,sex,ident_no,date,classno),g_adviser(adviser)g_subject=subject;graduate(graduate void show();graduate:graduate(student &s1,st

14、ring subject,teacher &t1):people(s1),student(s1),g_adviser(t1)g_subject=subject;graduate:graduate(graduate &g):people(g),student(g),g_adviser(g.g_adviser)g_subject=g.g_subject;void graduate:show()student:show();cout项目:g_subjectendl;cout导师信息:endl-endl;g_adviser.show();class TA:public graduate,public

15、teacherpublic:TA(graduate /TA(long no,string name,string sex,string ident_no,Date date,string classno,string subject,teacher adviser,string pricipleship,string department):people(no,name,sex,ident_no,date),graduate(no,name,sex,ident_no,date,classno,subject,adviser),teacher(no,name,sex,ident_no,date,pricipleship,department)TA(TA void show();TA:TA(graduate &g,teacher &t):people(g),graduate(g),teacher(t)/此处不需要给中间类赋值TA:TA(TA &T):people(T),graduate(T),teacher(T)void TA:show()graduate:show();cout职务:t_pricipleshipendl;cout部门:t_departmentendl;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号