實(shí)驗(yàn)六繼承與派生之歐陽(yáng)家百創(chuàng)編_第1頁(yè)
實(shí)驗(yàn)六繼承與派生之歐陽(yáng)家百創(chuàng)編_第2頁(yè)
實(shí)驗(yàn)六繼承與派生之歐陽(yáng)家百創(chuàng)編_第3頁(yè)
實(shí)驗(yàn)六繼承與派生之歐陽(yáng)家百創(chuàng)編_第4頁(yè)
實(shí)驗(yàn)六繼承與派生之歐陽(yáng)家百創(chuàng)編_第5頁(yè)
已閱讀5頁(yè),還剩7頁(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、繼承與組合歐陽(yáng)家百(2021.03.07)一、實(shí)驗(yàn)?zāi)康?. 了解繼承在面向?qū)ο蟪绦蛟O(shè)計(jì)中的重要作用。2. 進(jìn)一步理解繼承與派生的概念。3. 掌握通過(guò)繼承派生出一個(gè)新的類的方法。4. 了解虛基類的作用和用法。5. 掌握類的組合二. 實(shí)驗(yàn)內(nèi)容1. 請(qǐng)先閱讀下直的程序,寫(xiě)出程序運(yùn)行的結(jié)果,然后再上機(jī)運(yùn)行 程序,驗(yàn)證自己分析的結(jié)果是否正確。(1)#include using namespace std;class Apublic:A()coutMA:A() calledAn”;virtual A()coutA:A() called.Xn;1;class B:public Apublic:B(int i

2、) coutB:B() calledAn;buf=new chari;virtual B() delete buf;coutB:B() calledAn*;private:char *buf;void fun(A *a) coutHMay you succeed!nendl;delete a;int main()A *a=new B(15);fun(a);return 0;)h(1) 程序運(yùn)行結(jié)果:A:A() called*called.May you succeed!called.A:A() called*#includeusing namespace std;class Apublic:A

3、(int a,int b):x(a),y(b) coutHA constructor.nendl;void Add(int a,int b) x+=a;y+=b; void display() coutvvf vvxvv”,”vvyvv”)”;-A() coutMdestructor A.nendl;private:int x,y;class B:private Aprivate:inti,j;A Aobj;public:B(int a,int b,int c,int d):A(a,b),i(c),j(d),Aobj(l,l) coutBconstructor.nendl;void Add(i

4、nt xl,int yl,int x2,int y2)A:Add(xl,yl); i+=x2; j+=y2;void display()A:display();Aobj.displayO;cout,(Hi,jM)Hendl;B()coutdestructor B.endl;;int main()Bb(l,2,3,4);b.display();b.Add(l,3,5,7);b.display();return 0;(2) 程序運(yùn)行結(jié)果:A constructoreA constructor.B constructor.(1,2) (1,1) (3,4)(2,5) (1,1) (8,11)dest

5、ructor Bdestructor Adestructor A(3)# includeusing namespace std;class Apublic:A(int a):x(a) coutnA constructor.Mxendl; int f()return +x;A() coutHdestructor A.nendl;private:int x;class B:public virtual Aprivate:inty;A Aobj;coutuBpublic:B(int a,int b,int c):A(a),y(c),Aobj(c) constructor.Hyendl;intf()A

6、:f();Aobj.f();return +y;voiddisplay()coutvvA:f()vv%”vvAobj.f()vdvvf()vvendl;B()coutdestructor B.endl;;class C:public BcoutuCcoutuDpublic:C(int a,int b,int c):B(a,b,c),A(O) constructor.f,endl;class D:public C,public virtual Apublic:D(int b,int c):C(a,b,c),A(c) constructor.Hendl;D()coutdestructo

7、r D.nendl;;int main()D d(7,8,9);d.f();d.display();return 0;(3) 程序運(yùn)行結(jié)果:A constructorA constructore.9B constructore9C constructor.D constructoT12 12 11destructor Ddestructor Bdestructor Adestructor A#include using namespace std;class Baselpublic:Base 1()cout, class Basel !Hendl;;class TopLevel!2. 某出版系

8、統(tǒng)發(fā)行圖書(shū)和磁帶,利用繼承設(shè)計(jì)管理出版物的類。 要求如下:建立一個(gè)基類Publication 儲(chǔ)出版物的標(biāo)題title.出版 物名稱name.單價(jià)price及出版日期dateo用Book類和Tape類分 別管理圖書(shū)和磁帶,它們都從Publication類派生。Book類具有保 存圖書(shū)頁(yè)數(shù)的數(shù)據(jù)成員page, Tape類具有保存播放時(shí)間的數(shù)據(jù)成 員playtimeo每個(gè)類都有構(gòu)造函數(shù).析構(gòu)函數(shù),且都有用于從鍵盤(pán) 獲取數(shù)據(jù)的成員函數(shù)inputData(),用于顯示數(shù)據(jù)的成員函數(shù) display()o2.#include using namespace std;#include class Date

9、public:Date() Date(int y,int m,int d);Date(Date &d);void SetDate(int y,int m,int d);void ShowDate();private:int year,month,day;Date:Date(int yjnt mjnt d) year=y; month=m; day=d;Date:Date(Date &d) year=d.year; month=d.month; day=d.day;void Date:SetDate(int y,int m,int d) year=y; month=m; day=d;void D

10、ate:ShowDate()coutyear年vvmonthvv”月vvdayvv日vvendl; class Timepublic:Time()Time(int hjnt m,int s);Time(Time &t);void SetTime(int hjnt m,int s);void ShowTime();private:int hour,minute,second;Time:Time(int hjnt mjnt s) hour=h;minute=m; second=s;Time:Time(Time &t) hour=t.hour;minute=t.minute;second=t.sec

11、ond;void Time:SetTime(int h,int mjnt s)hour=h;minute=m; second=s;voidTime: ShowTime()couthourn:MminuteM:Hsecondendl;class Publicationpublic:Publication()Publication(string title,string name,float pricejnt yjnt m,int d); void inputData();void displayO;private:string title;string name;float price;Date

12、 date;Publication:Publication(string title,string name,float d):title(title),name(name),price(price),date(y,m,d) void Publication:inputData() coutHPlease input title, name, price, publication date of a book:Hendl;cintitlenameprice;int year,month,day;cinyearmonthday;date.SetDate

13、(year,month,day);void Publication:display() coutHtitle=f,titleendl;coutnname=Hnameendl; coutHprice=npriceendl;coutndate=M; date.ShowDate();class Book:public Publicationpublic:Book()Book(string title,string name,float pricejnt yjnt m,int d,int page); void inputData();void displayO;private:int page;;B

14、ook:Book(string title,string name,float price,int y,int mjnt djnt page):Publication(title,name,price,y,m,d)this-page=page;void Book:inputData() Publication: :inputData(); coutHPlease the pages of the book:frendl; cinpage;void Book:display() Publication: :display(); coutnpage=Hpageendl;class Tape:pub

15、lic Publicationpublic:Tape()Tape(string title,string name,float pricejnt y,int m,int d,Time playtime);void inputData();void displayO;private:Time playtime;Tape:Tape(string title,string name,float price,int y,int m,int d,Time playtime):Publication(ti tie,name,price,y,m,d),play time(play time) void Ta

16、pe:inputData() Publication: :inputData();coutHPlease the playtime of the tape:Hendl;int hour,minute,second;cinhourminutesecond;playtime.SetTime(hour,minute,second);void Tape:display() Publication: :display(); coutnplaytime=H; playtime.ShowTime();int main() Book bookl(M 教材 TC 卄程序設(shè)計(jì)H,30.00,2009,6,1,30

17、0); bookl.displayO; coutendl;Time time 1(30,10,20);Tape tape 1 (“磁帶”,“C+程序設(shè)計(jì)視頻”,10.00,2009,8,1 ,time 1); tapel.displayO;Book book2;book2.inputData();book2.display();coutendl;Tape tape2;tape2.inputData(); tape2.display(); return 0;3. 分別定義教師類Teacher和干部類Cadre,采用多重繼承的方式 由這兩個(gè)類派生出新類Teacher_Cadre (教師兼干部類)。

18、要求:(1) CZD貝。(2) 在Teacher類中還包含數(shù)據(jù)成員職稱title,在Cadre類中還包 含數(shù)據(jù)成員職務(wù)post,在Teacher_Cadre類中還包含數(shù)據(jù)成員工資 wage。(3) 對(duì)兩個(gè)基類中的姓名、年齡、性別、地址.電話數(shù)據(jù)成員用 相同的名字,在訪問(wèn)這類數(shù)據(jù)成員時(shí),指定作用域。(4) 在類體中聲明成員函數(shù),在類外定義成員函數(shù)。(5) 在派生類Teacher_Cadre的成員函數(shù)show中調(diào)用Teacher類 中的display函數(shù)輸屯姓名、年齡、性別、地址、電話,然后再 用com語(yǔ)句輸出職務(wù)和工資。3.#include#include using namespace std

19、;class Teacherpublic:Teacher(string a,char s,string tit,string ad,string t);void display();protected:string name;int age;char sex;string title;string addr;string tel;Teacher: :Teacher(string a,char s,string tit,string ad,string t): name(nam),age(a),sex(s),title(tit),addr(ad),tel(t) v

20、oid Teacher:display()coutnname:unameendl;coutnagenageendl;coutMsex:,sexendl;coutMtitle: Mtitleendl;coutMaddress:Haddrendl;coutntel: Htelendl;class Cadrepublic:Cadre(string a,char s,string p,string ad,string t);void display();protected:string name;int age;char sex;string post;string addr;stri

21、ng tel;Cadre:Cadre(string nam,int a,char s,string p,string ad,string t): name(nam),age(a),sex(s),post(p),addr(ad),tel(t) void Cadre: :display() coutnname: Hnameendl;coutMage: Mageendl;coutHsex:nsexendl;coutMpost:Hpostendl;coutHaddress:Maddrendl;coutHtel:ntelendl;1class Teacher_Cadre:public Teacher,p

22、ublic Cadrepublic:Teacher_Cadre(string a,char s,string tit,string p,string ad,string t,float w);void show();private:float wage;Teacher_Cadre:Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,string tel,float w):Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w) void Te

23、acher_Cadre:show()Teacher: :display();coutHpost: HCadre:postendl;coutH wages: Hwageendl;)int main()Teacher_Cadre te_ca(”Wangli,50,f,prof.”,president,135 BeijingRoad,Shanghai”,” (恵 1)61234567”, 1534.5);te_ca.show();return 0;4. 按下列要求編寫(xiě)程序。(1) 定義一個(gè)分?jǐn)?shù)類Scoreo它有3個(gè)數(shù)據(jù)成員:Chinese語(yǔ)文課成績(jī)English 英語(yǔ)課成績(jī)Mathematics 數(shù)

24、學(xué)課成績(jī)2個(gè)構(gòu)造函數(shù):無(wú)參的和帶參數(shù)的3個(gè)成員函數(shù):是否帶參數(shù)根據(jù)需要自定sum()計(jì)算三門(mén)課總成績(jī)pri nt()輸出三門(mén)課成績(jī)和總成績(jī)modifyO修改三門(mén)課成績(jī)(2) 定義一個(gè)學(xué)生類Studento它有3個(gè)數(shù)據(jù)成員:Num學(xué)號(hào)Name姓名MyScore 成績(jī)2個(gè)構(gòu)造函數(shù):無(wú)參的和帶參數(shù)的3個(gè)成員函數(shù):是否帶參數(shù)根據(jù)需要自定sum()計(jì)算某學(xué)生三門(mén)課總成績(jī)print()輸出某學(xué)生學(xué)號(hào)、姓名和成績(jī)modify()修改某學(xué)生學(xué)號(hào)、姓名和成績(jī)(3) 在主函數(shù)中,先定義一個(gè)學(xué)生類對(duì)象數(shù)組,再通過(guò)for循環(huán) 給對(duì)象數(shù)組賦上實(shí)際值,最后輸出對(duì)象數(shù)組個(gè)元素的值。4.# include# includeusing namespace std;class scorepublic:score()chinese=O;english=O; mathematics=O;score(floatch,floatma):chinese(ch),english(en),mathematics(ma)

溫馨提示

  • 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)論