面向对象程序设计(C)实验报告.doc
《面向对象程序设计(C)实验报告.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计(C)实验报告.doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计(C+)实验报告姓名:刘九州 学院:数学与计算机学院 班级:10级计算机大类三班 学号:100511314实验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 Documentpublic: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 Documentpublic:int PageCount;Book(char *a,int b):Document(a)PageCount=b;void main()char BookName20;int n;cout请输入书名:BookNa
4、me;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;void setage(int a)age=a;int ge
5、tage()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;couta;coutd;student n(c,a,d);cout请输入学生的姓名为: n.get
6、name()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 getname()return name;void setage(int a)age=a;int getage()return age
7、;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:int year;int month;int day;class student:public personpublic:student()/birthday.date();st
8、udent(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 personpublic:teacher()/birthday.date();teacher(int y,int m,int d):birthday(y,m,d)/birthday.date(y,m,d);teacher(
9、)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;teacher t(y,m,d);s.getbirthday(); t.getbirthday();运行结果:实验6 多继承一、实验目的1掌握多基继承的使用,访问方法;2理解类层次中访问规则;3掌握虚基类的定义及使用。二、实验内容及步骤
10、1. 定义一个学生类Student和教师类Teacher,学生类有姓名、学号、私有数据成员,教师类有姓名、工作证号、职称、课程、周学时数。再定义一个助教类TA,继承学生类和教师类,该类可以使用学生类的全部数据成员,以及教师类的课程和周学时数的数据成员。要求:每个类提供自定义的构造函数和析构函数,并通过同名函数ShowInfo来显示全部数据成员的值。2. 设计一个虚基类Person,包含姓名和年龄私有数据成员以及相关的成员函数;由它派生出领导类Leader,包含职务和部门私有数据成员以及相关的成员函数;再由Person派生出工程师类Engineer,包含职务和专业私有数据成员以及相关的成员函数;
11、再由Leader和Engineer类派生出主任工程师类Chairman。并采用相关数据进行测试。三、实验源程序和运行结果实验(一)源程序:#include#includeclass Studentprotected:char s_name20;int id_s;public:Student(char *name,int id);void ShowInfo();class Teacherprotected:char t_name20;int id_t;char position30;char lesson30;int hour;public:Teacher(char *pos,int h);Te
12、acher(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
13、 *less,int h)strcpy(lesson,less);hour=h;Teacher:Teacher(char *name,int id,char *less,char *pos,int h)strcpy(t_name,name);strcpy(lesson,less);strcpy(position,pos);id_t=id;hour=h;void Teacher:ShowInfo()cout姓名:t_namet职工号:id_tt职称:positiont课程:lessont学时数:hourendl;TA:TA(char *name,char id,char *less,int h)
14、:Student(name,id),Teacher(less,h)void TA:ShowInfo()Student:ShowInfo();cout课程:lessont学时数:hourendl;void main()TA ta(刘九州,14,c+,64);ta.ShowInfo();运行结果:实验(二)源程序:#include#includeclass Person /虚基类person类char name30;int age;public:Person(char *n,int a);void setname(char *n);void setage(int a);char *getname(
15、);int getage();class Leader:virtual public Person/领导类char job30;/职务char dep30;/部门public:Leader(char *jb,char *dp);void setjob(char *jb);void setdep(char *dp);char *getjob();char *getdep();class Engineer:virtual public Person/工程师类char major30; /专业char prof30; /职称public:Engineer(char *maj,char *pf);vo
16、id setmajor(char *maj);void setprof(char *pf);char *getmajor();char *getprof();class Chairman:public Leader,public Engineer /主任工程师类public:Chairman(char *n,int a,char *jb,char *dp,char *maj,char *pf);void disp();Person:Person(char *n,int a)strcpy(name,n);age=a;void Person:setname(char *n)strcpy(name,
17、n);void Person:setage(int a)age=a;char *Person:getname()return name;int Person:getage()return age;Leader:Leader(char *jb,char *dp):Person(,30)strcpy(job,jb);strcpy(dep,dp);void Leader:setjob(char *jb)strcpy(job,jb);void Leader:setdep(char *dp)strcpy(dep,dp);char *Leader:getjob()return job;char *Lead
18、er:getdep()return dep;Engineer:Engineer(char *maj,char *pf):Person(,30)strcpy(major,maj);strcpy(prof,pf);void Engineer:setmajor(char *maj)strcpy(major,maj);void Engineer:setprof(char *pf)strcpy(prof,pf);char *Engineer:getmajor()return major;char *Engineer:getprof()return prof;Chairman:Chairman(char
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计C 实验报告 面向 对象 程序设计 实验 报告
限制150内