版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C 語言程序設(shè)計課程實驗報告(第次)學(xué) 院:數(shù)學(xué)與計算機學(xué)院姓 名:張元杰學(xué) 號: 201510804033專 業(yè):軟件工程班 級: 1 班同 組 人:實驗地點: 6A-2實驗時間:指導(dǎo)教師:實驗名稱:多態(tài)性與虛函數(shù)所使用的開發(fā)工具及環(huán)境:硬件PC -l實驗?zāi)康模?1) 了解多態(tài)性的概念。(2) 了解虛函數(shù)的作用及使用方法。(3) 了解靜態(tài)關(guān)聯(lián)和動態(tài)關(guān)聯(lián)的概念和川法。(4) 了解純虛函數(shù)和抽象類的概念和用法。實驗內(nèi)容:1、分析程序運行結(jié)果,掌握虛函數(shù)的使用。程序一:#in elude using n amespace std;class ONE public:virtual void f()c
2、outONEe ndl;class TWO:public ONE public:TWO()coutTWOe ndl;class THREE:public TWO public:virtual void f()TWO:f(); coutf();/ONE THREEcoute ndl;程序二:#in clude using n amespace std;class Base public:virtual void fn() cout In Base Classn;;class SubClass :public Base public:virtual void fn() cout fn();/l n
3、 Base Classp=≻p-fn();/In Sub Class2、 實現(xiàn)一個類 A,在A中有兩個私有的整型變量a和b,定義構(gòu)造函數(shù)對 a和b進(jìn)行初始化,并實現(xiàn)成員函數(shù)geta ()取得a的值和getb ()取b的值。實現(xiàn)類 B從A繼承,覆蓋geta(),使其返回a的2倍。主函數(shù)中聲明類B對象,調(diào)用類B中的geta ()并將結(jié)果輸出。3、設(shè)計一個計算圖形面積的類庫。它的頂層是一個抽象類,并且提供相應(yīng)的接口函數(shù)。抽象基類Shape,派生出Point類、矩形Rectangle、正方形Square, Point類派生出圓 形Circle 。 要求:(1) 每個類有構(gòu)造函數(shù)、析構(gòu)函數(shù),并有相
4、應(yīng)的輸出語句,如:“正在構(gòu)造圓形”(2) 能顯示每個類的信息,如:輸出“我是圓形”(3) 能計算面積、周長(4) 定義一個基類 Shape類型的指針,實現(xiàn)動態(tài)多態(tài)(5) 動態(tài)創(chuàng)建一個圓形對象,賦值給基類Shape類型的指針變量,程序最后delete該指針,保證析構(gòu)函數(shù)的正確調(diào)用(提示:虛析構(gòu)函數(shù))(6 )在主函數(shù)測試。4、 設(shè)計一個基類 Base,其作用是計算一個圖形的面積,它只有一個公有的函數(shù)成員虛函數(shù)area。再從Base 類公有派生一個三角形類Triangle和一個圓類 Circle,在類Triangle和類Circle中分別定義自己的area 函數(shù),用于計算各自的面積。在主函數(shù)中設(shè)計一
5、個Base類的對象指針,分別指向類Triangle 和類Circle 的對象,調(diào)用各自的area 函數(shù)顯示相應(yīng)對象的面積。分析:用虛函數(shù)實現(xiàn)多態(tài)。5 將上題中的Base類改為抽象類,應(yīng)用抽象類,求矩形、圓形的周長和面積。分析:將Base類的其成員函數(shù) area 和perimeter 聲明為純虛函數(shù),Base就成為 一個抽 象類。然后再從Base派生矩形類和圓形類,分別實現(xiàn)Base中純虛函數(shù)的功 能結(jié)果與分析:Sy8-1:程序一:i-7 F:C+習(xí)lDebug:L 心eTWO TWOONE THREE程序二:Sy8-2:#in cludeusing n amespace std;class Ap
6、ublic:A(int a,int b):a(a),b(b) virtual int geta()return a; frie nd class B;private:int a;int b;class B:public Apublic:B(int a,int b):A(a,b) int geta()retur n 2*a;int mai n()A *p=new B(2,3); coutgeta()e ndl;system(pause);return 0;l F:K+8.Sy8-2Y3?bLig5y8-Z.exeSy8-3:#in cludeusing n amespace std;con st
7、 double Pl=3.1415926;class Shapepublic:Shape()coutC on struct ing Shape.e ndl; virtual Shape()coutDestruct ing Shape.e ndl; virtual void Name()coutSharee ndl; virtual double Area()=0;virtual double C()=0;class Point: public Shapepublic:Point()coutConstructing Point.endl; Poi nt()coutDestructi ng Poi
8、 nt.e ndl; virtual void Name()coutPo in te ndl; double Area()retur n 0; double C()return 0;class Recta ngle:public Shape public:Rectangle(int l,int w):length(l),width(w)coutConstructing Rectangle.endl;Rectangle()coutDestructing Rectangle.endl;double Area()retur n len gth*width;double C()return (le n
9、gth+width)*2;void Name()coutRecta nglee ndl;private:double len gth;double width;class Squre:public Shapepublic:Squre(i nt l):L(l)coutC on struct ing Squre.e ndl; Squre()coutDestruct ing Squre.e ndl; void Name()coutSquree ndl; double Area()retur n L*L;double C()return 4*L;private:double L;;class Circ
10、le: public virtual Pointpublic:Circle(double r):radious(r)coutConstructing Circle.endl;Circle()coutDestructing Circle.endl;void Name()coutvCirclevName();coutC()ve ndl;coutArea()vName();coutC()ve ndl;coutArea()vName();coutC()ve ndl;coutArea()vName();coutC()ve ndl;coutArea()ve ndl;delete p;system(paus
11、e);Constructin Shape* ConstFuct iny Rec tangle-. Rec tanc| leC = 10Aiea = EDestructing RectDes tmict lnj( S hctpe -.iwBUMSy8-4:#in cludeusing n amespace std;con st double Pl=3.1415926;class Basepublic:Base()coutC on struct ing Base.e ndl;virtual Base()coutDestructed Base.e ndl;virtual double Area()=
12、0;class Trian gle:public Basepublic:Tria ngle(double a,double b,double c):a(a),b(b),c(c)coutC on structi ng Tria ngle.e ndl;Tria ngle()coutDestructed Trian gle.e ndl;double Area()return sqrt(0.5*(a+b+c)*(0.5*(a+b+c)-a)*(0.5*(a+b+c)-b)*(0.5*(a+b+c)-c); private:double a,b,c;class Circle:public Basepub
13、lic:Circle(double r):radious(r)coutConstructing Circle.endl; Circle()coutDestructed Circle.e ndl;double Area()retur n Pl*radious*radious;private:double radious;int mai n()Base *p;p=new Trian gle(3,4,5);coutArea()ve ndl;delete p;coute ndl;p=new Circle(4);coutArea()ve ndl;delete p;coute ndl;system(pau
14、se);return 0;-F:C+SSy8-4DebugSyS-41exeConstruct ing Base Cons七1*1:1;insr Triangle A re a : 6Destructed Triangfle. Destructed Base-Construct ins Base . Construjct ing Circle -. AreaDestructed Circle Destructed Base-Sy8-5:#in cludeusing n amespace std; const double Pl=3.1415926; class Basepublic:Base(
15、)coutC on struct ing Base.e ndl;virtual Base()coutDestructed Base.e ndl;virtual double Area()=0;virtual double Perimeter()=0;/ 周長;class Trian gle:public Basepublic:Tria ngle(double a,double b,double c):a(a),b(b),c(c)coutC on structi ng Tria ngle.e ndl; Triangle()coutDestructed Triangle.endl;double A
16、rea()return sqrt(0.5*(a+b+c)*(0.5*(a+b+c)-a)*(0.5*(a+b+c)-b)*(0.5*(a+b+c)-c); double Perimeter()retur n a+b+c;private:double a,b,c;class Circle:public Basepublic:Circle(double r):radious(r)coutConstructing Circle.endl;Circle()coutDestructed Circle.endl;double Area()retur n PI*radious*radious;double Perimeter()retur n 2*PI*radious;private:double radious;int mai n()Base *p;p=new Trian gle(3,4,5);coutArea()ve ndl;coutPerimeter()ve ndl;delete p;coute ndl;p=new Circle(4);coutArea()ve ndl;coutPerimeter()ve ndl;delete p;coute ndl;system
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家風(fēng)家訓(xùn)先進(jìn)事跡材料(15篇)
- 易錯題27 古詩文默寫之開放性默寫題-不會在開放中找限制高考語文備戰(zhàn)2025年高考易錯題(新高考專用)含解析
- 個人理財基礎(chǔ)知識
- 手術(shù)護(hù)理指南之截石位
- 初級會計實務(wù)-初級會計職稱2021年真題
- 2024年中國睡眠呼吸暫停藥物行業(yè)發(fā)展現(xiàn)狀、市場前景、投資方向分析報告(智研咨詢發(fā)布)
- 大子午擴張低壓渦輪低工況流動匹配機理研究
- 二零二五年度品牌授權(quán)及營銷推廣合同3篇
- 薄弱環(huán)節(jié)護(hù)理干預(yù)結(jié)合無痛化管理對老年結(jié)直腸癌根治術(shù)患者疼痛及并發(fā)癥的影響
- 二零二五年度道路建設(shè)項目合同履約保證金協(xié)議3篇
- 2024-2025學(xué)年北京石景山區(qū)九年級初三(上)期末語文試卷(含答案)
- 第一章 整式的乘除 單元測試(含答案) 2024-2025學(xué)年北師大版數(shù)學(xué)七年級下冊
- JD37-009-2024 山東省存量更新片區(qū)城市設(shè)計編制技術(shù)導(dǎo)則
- 中國高血壓防治指南(2024年修訂版)
- JT-T-390-1999突起路標(biāo)行業(yè)標(biāo)準(zhǔn)
- 《也是冬天-也是春天》
- 初中音樂聽課筆記20篇
- 央國企信創(chuàng)化與數(shù)字化轉(zhuǎn)型規(guī)劃實施
- 商標(biāo)基礎(chǔ)知識課件
- 涉詐風(fēng)險賬戶審查表
- 2023年大學(xué)英語四級考試模擬真題及答案
評論
0/150
提交評論