面向?qū)ο笈缮惻c繼承實驗三_第1頁
面向?qū)ο笈缮惻c繼承實驗三_第2頁
面向?qū)ο笈缮惻c繼承實驗三_第3頁
面向?qū)ο笈缮惻c繼承實驗三_第4頁
面向?qū)ο笈缮惻c繼承實驗三_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、福建農(nóng)林大學計算機與信息學院實驗報告系: 計算機 專業(yè): 計算機科學與技術(shù) 年級: 2009級 姓名: 學號: 實驗室號 田507、513、514 計算機號 實驗時間:2011年10月25日、11月1日指導教師簽字: 成績: 實驗3派生類與繼承一、實驗目的和要求(1)掌握派生類的聲明與定義方法,進一步理解類的繼承的概念,能夠定義和使用類的繼承關(guān)系。(2)熟悉公有派生和私有派生的訪問特性。(3)了解虛基類在解決二義性問題中的作用。二、實驗內(nèi)容和原理(1)定義一個基類animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)setage(int n)中直接給age賦值,看看會有什么問

2、題,把age改為公有成員變量,還會有問題嗎?編程試試看。(2)定義一個基類baseclass,有整型成員變量number ,構(gòu)造其派生類derivedclass,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。(3)定義一個車(vehicle)基類,具有maxspeed、weight等成員變量,run、stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類。自行車類有高度(height)等屬性,汽車類有座位數(shù)(seatnum)等屬性。從bicycle和motorcar派生出摩托車(motorcycle)類,在繼承過程中,注意把vehicle設(shè)置為虛基類。如果不把vehicle設(shè)

3、置為虛基類,會有什么問題?編程試試看。(4)設(shè)計一個用于人事管理的people(人員)類??紤]到通用性,這里只抽象出所有類型人員都具有的屬性:number(編號)、sex(性別)、id(身份證號)等等。用成員函數(shù)實現(xiàn)對人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)。從people(人員)類派生出student(學生)類,添加屬性:班號char classno7;從people類派生出teacher(教師)類,添加屬性:職務char principalship11、部門char department21。從student類派生出graduate(研究生)類,添加屬

4、性:專業(yè)char subject21、導師teacher adviser;從graduate類和teacher類派出ta(助教生)類,注意虛基類的使用。重載相應的成員函數(shù),測試這些類。三、實驗環(huán)境聯(lián)想計算機,windows xp操作系統(tǒng),visual c+ 6.0四、算法描述及實驗步驟(1)編寫源程序。(2)檢查程序有無錯誤(包括語法錯誤和邏輯錯誤),有則改之。(3)編譯和連接,仔細分析編譯信息,如有錯誤應找出原因并改正之。(4)運行程序,分析結(jié)果。(5)將調(diào)試好的程序保存在自己的用戶目錄中,文件名自定。五、調(diào)試過程1.2.3.4六、實驗結(jié)果1.2.3.4.附錄:1.#include<i

5、ostream>using namespace std;class animal public:int age;class dog:public animal public:void setage(int n) age=n;void display();void dog:display()cout<<"this dog is "<<age<<" years."<<endl;int main()dog d; d.setage(5);d.display();return 0;2.#include<i

6、ostream>using namespace std;class baseclass public: baseclass(int i) number=i; cout<<"number="<<number<<endl;baseclass() cout<<"destructing baseclass"<<endl; private:int number;class derivedclass :public baseclass public: derivedclass(int i,int j)

7、;derivedclass(); private:int b;derivedclass:derivedclass(int i,int j):baseclass(i) b=j; cout<<"b="<<b<<endl;derivedclass:derivedclass() cout<<"destructing derivedclass "<<endl;int main() derivedclass x(5,6); return 0;3.#include<iostream>using n

8、amespace std;class vehicle protected: float maxspeed,weight; public: void run(); void stop();class bicycle:virtual public vehicle public: float height; void seta(int x)maxspeed=x;class motorcar:virtual public vehicle public:void setb(int x)maxspeed=x; int seatnum;class motorcycle:public bicycle,publ

9、ic motorcar public: void show() cout<< "maxspeed of bicycle="<<bicycle:maxspeed<<endl; cout<< "maxspeed of motorcar="<<motorcar:maxspeed<<endl; ;int main() motorcycle m; m.seta(2); m.show(); m.setb(3); m.show(); return 0; 4.#include <iostrea

10、m>#include <string>using namespace std;class date int year,mouth,day; friend class people;class people string number,sex;char *id;date birthday; public: people(string number="ren",string sex="nan",char *idd="00008"):number(number),sex(sex) id=new charstrlen(idd

11、)+1; if(id) strcpy(id,idd); people(const people &p); inline void setyear(int y) birthday.year=y; inline void setmouth(int m) birthday.mouth=m; inline void setday(int d) birthday.day=d; inline int getyear() return birthday.year; inline int getmouth() return birthday.mouth; inline int getday() ret

12、urn birthday.day; inline string getnumber() return number; inline void display(); people();people:people(const people &p) number=p.number; sex=p.sex; birthday.day=p.birthday.day; birthday.mouth=p.birthday.mouth; birthday.year=p.birthday.year; id=new charstrlen(p.id)+1; if(id) strcpy(id,p.id);voi

13、d people:display()cout<<"人員的編號是:"<<number<<endl;cout<<"人員的性別是:"<<sex<<endl;cout<<"人員的出生年月是:"<<getyear()<<"-"<<getmouth()<<"-"<<getday()<<endl;people:people() if(id!=null) d

14、elete id; id=null;class student:virtual public people char classno7; public: student(string number="student1",string sex="nan",char *id="00008",char *cn="00001"):people(number,sex,id) strcpy(classno,cn); char* getclassno();char* student:getclassno() char *cn;c

15、n=classno;return cn;class teacher:virtual public people char principalship11; char department21; public: teacher(string number="haihai",string sex="nan",char *id="00008",char *pp="banzhuren",char *dm="jisuanji"):people(number,sex,id) strcpy(principal

16、ship,pp); strcpy(department,dm); char* getprincipalship(); char* getdepartment();char* teacher:getprincipalship()char *cn;cn=principalship;return cn; char* teacher:getdepartment()char *cn;cn=department;return cn;class graduate:public student char subject21; teacher adviser; public: graduate(string n

17、umber="007",string sex="nan",char *id="00008",char *cn="00001",char *sb="chengxu"):student(number,sex,id,cn),people(number,sex,id) strcpy(subject,sb); char* getsubject(); string getnumber() return adviser.getnumber(); ;char* graduate:getsubject() cha

18、r *cn;cn=subject;return cn; class ta:public teacher,public graduate int n;public: ta(string number="007",string sex="nan",char *id="00008",char *pp="banzhuren",char *dm="jisuanji",char *cn="00001",char *sb="chengxu"):teacher(numbe

19、r,sex,id,pp,dm),graduate(number,sex,id,cn,sb),people(number,sex,id) void printfall();void ta:printfall()cout<<"請輸入學生的出生年份"<<endl;cin>>n;setyear(n);cout<<"請輸入學生的出生月份"<<endl;cin>>n;setmouth(n);cout<<"請輸入學生的出生的具體哪一天"<<endl;cin>>n;setday(n);cout<

溫馨提示

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

評論

0/150

提交評論