1、面向对象程序设计C+面向对象程序设计(C+)实验报告* 学院:数学与计算机学院 班级:10级计算机大类三班 学号:*实验5 单继承一、实验目的1掌握派生的类别与方式; 2了解派生类中如何使用基类的成员、基类成员在派生类中的访问控制; 3. 掌握继承中构造函数和析构函数的调用过程。二、实验内容及步骤1.给出一个Document类,从Document派生出Book类,增加PageCount变量。在主函数中进行测试,创建Book类对象并进行初始化,输出书名和页数。 2.设计一个单基继承的类层次程序,利用Person类派生出Student类,增加属性xh(学号),Person类中至少有姓名、年龄等数据
2、成员,成员函数中构造函数对其初始化,析构函数释放相应存储单元,输出函数输出其数据成员的值,其它成员函数根据需要添加,在主函数中进行测试。3.设计一个人员类person和一个日期类date,由人员类派生出学生类student和教师类professor,学生类和教师类的数据成员birthday为日期类。在主函数中进行测试。三、实验源程序和运行结果实验(一)源程序:#include#includeusing namespace std;class Document public: Document(); Document(); Document(char*name); char *Name; voi
3、d PrintNameOf();Document:Document(char*name) Name=new charstrlen(name+1); strcpy(Name,name);Document:Document() delete Name;void Document:PrintNameOf() coutNameendl;class Book:public Document public: int PageCount; Book(char *a,int b):Document(a) PageCount=b; ;void main() char BookName20; int n; cou
4、t请输入书名:BookName; cout请输入书的页数:n; Book b(BookName,n); cout书名为:b.Nameendl; cout页数为:b.PageCountendl;运行结果:实验(二)源程序:#include#includeusing namespace std;class personpublic: person() name=张三; age=0; person(string c,int a) name=c; age=a; person() void setname(string c) name=c; string getname() return name; v
5、oid setage(int a) age=a; int getage() return age; private: string name; int age;class student:public personpublic: student() xh=0; student(int d) xh=d; student(string c,int a,int d):person(c,a) xh=d; student() void setxh(int d) xh=d; int getxh() return xh; private: int xh;void main() string c; coutc
6、; couta; coutd; student n(c,a,d); cout请输入学生的姓名为: n.getname()endl; cout请输入学生的年龄为: n.getage()endl; cout请输入学生的学号为: n.getxh()endl;运行结果: 实验(三)源程序:#includeusing namespace std;class personpublic: person() name=张三; age=0; person(string c,int a) name=c; age=a; person() void setname(string c) name=c; string g
7、etname() return name; void setage(int a) age=a; int getage() return age; private: string name; int age;class datepublic: date() year=2011; month=12; day=17; date() date(int y,int m,int d) year=y; month=m; day=d; int getyear() return year; int getmonth() return month; int getday() return day; private
8、: int year; int month; int day;class student:public personpublic: student() / birthday.date(); student(int y,int m,int d):birthday(y,m,d) student() void getbirthday() cout学生的生日为:n; coutbirthday.getyear()年birthday.getmonth()月birthday.getday()日endl; private: date birthday;class teacher:public personpu
9、blic: teacher()/ birthday.date(); teacher(int y,int m,int d):birthday(y,m,d) /birthday.date(y,m,d); teacher() void getbirthday() cout老师的生日为:n; coutbirthday.getyear()年birthday.getmonth()月birthday.getday()日endl; private: date birthday;void main() cout请输入学生的生日:ymd; student s(y,m,d); cout请输入老师的生日:ymd; t
10、eacher t(y,m,d); s.getbirthday(); t.getbirthday();运行结果:实验6 多继承一、实验目的1掌握多基继承的使用,访问方法;2理解类层次中访问规则;3掌握虚基类的定义及使用。二、实验内容及步骤1.定义一个学生类Student和教师类Teacher,学生类有姓名、学号、私有数据成员,教师类有姓名、工作证号、职称、课程、周学时数。再定义一个助教类TA,继承学生类和教师类,该类可以使用学生类的全部数据成员,以及教师类的课程和周学时数的数据成员。要求:每个类提供自定义的构造函数和析构函数,并通过同名函数ShowInfo来显示全部数据成员的值。2.设计一个虚基
11、类Person,包含姓名和年龄私有数据成员以及相关的成员函数;由它派生出领导类Leader,包含职务和部门私有数据成员以及相关的成员函数;再由Person派生出工程师类Engineer,包含职务和专业私有数据成员以及相关的成员函数;再由Leader和Engineer类派生出主任工程师类Chairman。并采用相关数据进行测试。三、实验源程序和运行结果实验(一)源程序:#include#includeclass Studentprotected: char s_name20; int id_s;public: Student(char *name,int id); void ShowInfo()
12、;class Teacherprotected: char t_name20; int id_t; char position30; char lesson30; int hour;public: Teacher(char *pos,int h); Teacher(char *name,int id,char *less,char *pos,int h); void ShowInfo();class TA:public Student,public Teacherpublic: TA(char *name,char id,char *less,int h); void ShowInfo();Student:Student(char *name,int id) strcpy(s_name,name); id_s=id;void Student:ShowInfo() cout姓名:s_namet学号:id_sendl;Teacher:Teacher(char *less,int h) strcpy(lesson,less); hour=h;Teacher:Teacher(char *name,int id,char *les
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1