




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年稀土鋁合金、銅合金材料合作協(xié)議書(shū)
- 2025年多晶硅磁控濺射靶材合作協(xié)議書(shū)
- 2025年CATV QAM調(diào)制器合作協(xié)議書(shū)
- 二零二五年度環(huán)保監(jiān)測(cè)設(shè)備維護(hù)與數(shù)據(jù)分析合同
- 二零二五年度人力資源服務(wù)外包與員工培訓(xùn)合作協(xié)議
- 二零二五年度公司管理人員安全責(zé)任聘用合同
- 二零二五年度定制衣柜個(gè)性化設(shè)計(jì)、生產(chǎn)與十年質(zhì)保服務(wù)協(xié)議
- 果園生態(tài)保護(hù)與可持續(xù)發(fā)展轉(zhuǎn)讓協(xié)議(2025年度)
- 二零二五年度外貿(mào)公司全球業(yè)務(wù)拓展保密及合作框架合同
- 2025年度網(wǎng)絡(luò)安全擔(dān)保人保障協(xié)議
- GB/T 23111-2008非自動(dòng)衡器
- GB/T 18877-2020有機(jī)無(wú)機(jī)復(fù)混肥料
- GA/T 1073-2013生物樣品血液、尿液中乙醇、甲醇、正丙醇、乙醛、丙酮、異丙醇和正丁醇的頂空-氣相色譜檢驗(yàn)方法
- 三大構(gòu)成之立體構(gòu)成-課件
- DB11 938-2022 綠色建筑設(shè)計(jì)標(biāo)準(zhǔn)
- 最新家政服務(wù)員培訓(xùn)課件
- 2022譯林版新教材高一英語(yǔ)必修二單詞表及默寫(xiě)表
- 全國(guó)青少年機(jī)器人技術(shù)等級(jí)考試:二級(jí)培訓(xùn)全套課件
- TB T2075-《電氣化鐵道接觸網(wǎng)零部件》
- NB∕T 10730-2021 煤礦井下斷層導(dǎo)水性探查與治理技術(shù)規(guī)范
- 九種中醫(yī)體質(zhì)辨識(shí)概述課件
評(píng)論
0/150
提交評(píng)論