實驗3繼承和派生類的應用_第1頁
實驗3繼承和派生類的應用_第2頁
實驗3繼承和派生類的應用_第3頁
實驗3繼承和派生類的應用_第4頁
實驗3繼承和派生類的應用_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗3 繼承和派生類的應用3.1實驗目的1.掌握多重繼承和派生類的方法2.掌握初始化基類成員的方法3.掌握定義虛基類的方法3.2實驗內容與步驟1.上機實驗題一定義一個日期(年、月、日)的類和一個時間(時、分、秒)的類,并由這兩個類派生出日期和時間類。主函數(shù)完成基類和派生類的測試工作。分析定義一個描述日期的類,構造函數(shù)完成年、月、日的初始化,包含一個重新設置日期的成員函數(shù),一個獲取日期的成員函數(shù)。該類可定義為:class Dateint 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 *);函數(shù)SetDate完成數(shù)據成員的賦初值。函數(shù)GetDate要將整數(shù)年、月、日變換成字符串后,存放到參數(shù)所指向的字符串中。把一個整數(shù)變換成字符串可通過庫函數(shù):char * _itoa(int a , char *s, int b);來實現(xiàn),參數(shù)a為要變換的整數(shù),b為數(shù)制的基數(shù)(如10,表示將a轉換為對應的十進制的字符串),轉換的結果存放到s所指向的字符串中。函數(shù)返回變換后字符串的首指針。該成員函數(shù)可以是:void Date:GetDate(char *s) char 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;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 t20;_itoa(Year,s,10); strcat(s,/);_itoa(Month,t,10); strcat(s,t);strcat(s,/);_itoa(Day,t,10); strcat(s,t)

5、;class Timeint Hours,Minutes,Seconds;/時、分、秒public: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 t20;_itoa(Hours,s,10); strcat(s,:);_itoa(Minutes,t,10); strca

6、t(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:GetD

7、ateTime(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;d1.GetDate(s);cout日期是:sn;Time t1(12,25,

8、50);t1.GetTime(s);cout時間是:sn;DateTime dt1(2003,2,4, 8,20,15);dt1.GetDateTime(s);coutsn;dt1.SetDateTime(2003,12,30,23,50,20);dt1.GetDateTime(s);coutsn;上機要求將類DateTime改為由基類Date和Time私有派生,程序能否正確編譯和執(zhí)行,為什么?寫出實驗報告。2.上機實驗題二 設計一個描述兒童、成人和老人的類,兒童分為學齡前和學齡期兒童,成人有工作,老人已退休。提取共性作為基類,并派生出滿足要求的各個類及每一個類上的操作。設計一個完整的程序,并

9、完成測試程序的正確性。分析描述一個人的基本特性包括:姓名,出生日期,出生地。把這些基本特性定義為一個基類Base。不論學齡前還是學齡期兒童都要有監(jiān)護人。為此在類Base的基礎上派生出類AllChil,再把類AllChil作為基類派出學齡前和學齡期兒童的類。把類Base作為基類,分別派生出成人類和老人類。一個供參考的部分程序為:#include #include class Basechar Name14;/姓名int Year,Month,Day;/分別存放出生年、月、日char BothPlace30; /出生地public:Base( char *n, int y,int m,int d,

10、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 Basechar ParMa14;/監(jiān)護人public :AllChil()

11、 :Base();AllChil(char *n, int y,int m,int d,char *bp,char *pm):Base(n,y,m,d,bp);void SetParMa( char *); /設置監(jiān)護人void GetParMa( char *); /獲取監(jiān)護人void PrintAllChil( ) ; /輸出有關信息;class Men:public Basechar *unit;/單位int salary;/工資char tel20;/電話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);void GetData(char *,int *,char *); /取單位,工資,電話void

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論