试验3继承和派生类的应用_第1页
试验3继承和派生类的应用_第2页
试验3继承和派生类的应用_第3页
试验3继承和派生类的应用_第4页
试验3继承和派生类的应用_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验3继承和派生类的应用3.1实验目的1.掌握多重继承和派生类的方法2.掌握初始化基类成员的方法3.掌握定义虚基类的方法3.2实验内容与步骤1.上机实验题一定义一个日期(年、月、日)的类和一个时间(时、分、秒)的类,并由这两个类派生 出日期和时间类。主函数完成基类和派生类的测试工作。分析定义一个描述日期的类,构造函数完成年、月、日的初始化,包含一个重新设置日期 的成员函数,一个获取日期的成员函数。该类可定义为:class Date(int Year,Month,Day; /分别存放年、月、日public:Date(int y=0, int m=0,int d=0)(Year= y; Month

2、 = m; Day = d;void SetDate(int ,int ,int );void GetDate(char *);函数SetDate完成数据成员的赋初值。函数GetDate要将整数年、月、日变换成字符串后,存放到参数所指向的字符串中。把一个整数变换成字符串可通过库函数:char * _itoa(int a , char *s, int b);来实现,参数a为要变换的整数,b为数制的基数(如10,表示将a转换为对应的十进制的 字符串),转换的结果存放到s所指向的字符串中。函数返回变换后字符串的首指针。该成员函数可以是:void Date:GetDate(char *s)(char

3、t20;实验3继承和派生类的应用_itoa(Year,s,10);strcat(s,/);_itoa(Month,t,10);strcat(s,t);strcat(s,/);_itoa(Day,t,10);strcat(s,t);定义描述时间的类与描述日期的类类同,然后用这二个类作为基类,公有派生出描述日 期和时间的类。简化的参考程序如下:将年变换为字符串表示年、月、日之间用“福开将月变换为字符串表示将年、月字符串拼接将年、月、日拼接成一个字符串#include #include #include class Dateint Year,Month,Day;public:Date(int y=0

4、, int m=0,int d=0) Year= y; Month = m; Day = d; voidSetDate(int ,int ,int);void GetDate(char *);void Date:SetDate(int y,int m,int d )Year= y; Month = m; Day = d;void Date:GetDate(char *s)char t20;_itoa(Year,s,10); strcat(s,/);_itoa(Month,t,10); strcat(s,t);strcat(s,/);_itoa(Day,t,10); strcat(s,t); c

5、lass Timeint Hours,Minutes,Seconds; public:Time(int h=0,int m=0, int s=0)分别存放年、月、日/时、分、秒C+面向对象程序设计实验指导实验3继承和派生类的应用( Hours = h; Minutes = m; Seconds = s; void SetTime(int h,int m, int s)( Hours = h; Minutes = m; Seconds = s; void GetTime(char *);void Time:GetTime(char *s)(char t20;_itoa(Hours,s,10);

6、strcat(s,:);_itoa(Minutes,t,10); strcat(s,t);strcat(s,:);_itoa(Seconds,t,10); strcat(s,t);class DateTime:public Date,public Time(公有派生public:DateTime():Date(),Time() (DateTime(int y,int m,int d,int h,int min,int s):Date(y,m,d),Time(h,min,s) void GetDateTime(char *);void SetDateTime(int y,int m,int d,

7、int h,int min,int s);void DateTime:GetDateTime(char *s)char s1100,s2100;GetDate(s1); GetTime(s2);strcpy(s,日期和时间分别是:);strcat(s,s1);strcat(s,; ); strcat(s,s2);void DateTime:SetDateTime(int y,int m,int d,int h,int min,int s)SetDate(y,m,d); SetTime(h,min,s);void main(void )Date d1(2003,1,30);char s200;d

8、1.GetDate(s);cout日期是:sn;Time t1(12,25,50);t1.GetTime(s);C+面向对象程序设计实验指导cout时间是:sn;DateTime dt1(2003,2,4, 8,20,15);dtl.GetDateTime(s);coutsn;dt1.SetDateTime(2003,12,30,23,50,20);dt1.GetDateTime(s);coutsn;上机要求将类DateTime改为由基类Date和Time私有派生,程序能否正确编译和执行,为什么?写出实验报告。2.上机实验题二设计一个描述儿童、成人和老人的类,儿童分为学龄前和学龄期儿童,成人有

9、工作,老 人已退休。提取共性作为基类,并派生出满足要求的各个类及每一个类上的操作。设计一个 完整的程序,并完成测试程序的正确性。分析描述一个人的根本特性包括:姓名,出生日期,出生地。把这些根本特性定义为一个基类Base。不管学龄前还是学龄期儿童都要有监护人。为此在类Base的根底上派生出类AllChil ,再把类AllChil作为基类派出学龄前和学龄期儿童的类。把类Base作为基类,分别派生出成人类和老人类。一个供参考的局部程序为:#include #include class Basechar Name14;int Year,Month,Day;char BothPlace30;public

10、:/姓名分别存放出生年、月、日出生地Base( char *n, int y,int m,int d,char *bp);Base();void SetDate(int ,int ,int );void SetName(char *);void SetBothPlace(char *);void GetDate(int *,int * ,int *);void GetName(char *);void GetBothPlace(char *);void PrintBase();class AllChil:public Base设置出生年、月、日设置姓名设置出生地获取出生年、月、日/获取姓名/获

11、取出生地输出有关信息C+面向对象程序设计实验指导(char ParMa14;public :AllChil() :Base();AllChil(char *n, int y,int m,int d,char *bp,char *pm):Base(n,y,m,d,bp);void SetParMa( char *);void GetParMa( char *);void PrintAllChil();class Men:public Base(char*unit;/单位intsalary;/工资chartel20;/public:Men( ) :Base();Men(char *n, int y,int m,int d,char *bp,char*u,int s,char *te):Base(n,y,m,d,bp) voidGetData(char *,int *,char *); void SeetData(char*,int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论