面向?qū)ο笈缮?lèi)與繼承實(shí)驗(yàn)三_第1頁(yè)
面向?qū)ο笈缮?lèi)與繼承實(shí)驗(yàn)三_第2頁(yè)
面向?qū)ο笈缮?lèi)與繼承實(shí)驗(yàn)三_第3頁(yè)
面向?qū)ο笈缮?lèi)與繼承實(shí)驗(yàn)三_第4頁(yè)
面向?qū)ο笈缮?lèi)與繼承實(shí)驗(yàn)三_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

4、性:專業(yè)char subject21、導(dǎo)師teacher adviser;從graduate類(lèi)和teacher類(lèi)派出ta(助教生)類(lèi),注意虛基類(lèi)的使用。重載相應(yīng)的成員函數(shù),測(cè)試這些類(lèi)。三、實(shí)驗(yàn)環(huán)境聯(lián)想計(jì)算機(jī),windows xp操作系統(tǒng),visual c+ 6.0四、算法描述及實(shí)驗(yàn)步驟(1)編寫(xiě)源程序。(2)檢查程序有無(wú)錯(cuò)誤(包括語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤),有則改之。(3)編譯和連接,仔細(xì)分析編譯信息,如有錯(cuò)誤應(yīng)找出原因并改正之。(4)運(yùn)行程序,分析結(jié)果。(5)將調(diào)試好的程序保存在自己的用戶目錄中,文件名自定。五、調(diào)試過(guò)程1.2.3.4六、實(shí)驗(yàn)結(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<<"人員的編號(hào)是:"<<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<<"請(qǐng)輸入學(xué)生的出生年份"<<endl;cin>>n;setyear(n);cout<<"請(qǐng)輸入學(xué)生的出生月份"<<endl;cin>>n;setmouth(n);cout<<"請(qǐng)輸入學(xué)生的出生的具體哪一天"<<endl;cin>>n;setday(n);cout<

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論