实验3 继承和派生类的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 = 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 t[20];

_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 Date{

int Year,Month,Day; //分别存放年、月、日

public:

Date(int y=0, int m=0,int d=0)

{ Year= y; Month = m; Day = d; }

void SetDate(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 t[20];

_itoa(Year,s,10); strcat(s,"/");

_itoa(Month,t,10); strcat(s,t);

strcat(s,"/");

_itoa(Day,t,10); strcat(s,t);

}

class Time

{

int Hours,Minutes,Seconds; //时、分、秒

public: Array

Time(int h=0,int m=0, int s=0)

{ 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 t[20];

_itoa(Hours,s,10); 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,int h,int min,int s);

};

void DateTime::GetDateTime(char *s)

{

char s1[100],s2[100];

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 s[200];

d1.GetDate(s);

cout<<"日期是:"<

Time t1(12,25,50);

t1.GetTime(s);

相关文档
最新文档