面向?qū)ο蟪绦蛟O(shè)計實驗報告-實驗三_第1頁
面向?qū)ο蟪绦蛟O(shè)計實驗報告-實驗三_第2頁
面向?qū)ο蟪绦蛟O(shè)計實驗報告-實驗三_第3頁
面向?qū)ο蟪绦蛟O(shè)計實驗報告-實驗三_第4頁
面向?qū)ο蟪绦蛟O(shè)計實驗報告-實驗三_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上北京理工大學(xué)珠海學(xué)院實驗報告ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY班級:13級計算機3班 學(xué)號:7 姓名:鄭永雄 指導(dǎo)教師:譚忠兵 實驗題目:多態(tài)性 實驗時間:2014-06-09 成績:一、實驗內(nèi)容程序1. 編寫一個程序,用成員函數(shù)重載運算符“+”和“-”將兩個二維數(shù)組相加和相減,要求第一個二維數(shù)組的值由構(gòu)造函數(shù)設(shè)置,另一個二維數(shù)組的值由鍵盤輸入。程序2. 編寫一個程序,要求:(1)聲明一個類complex,定義類complex的兩個對象c1和c2,對象c1通過構(gòu)造函數(shù)直接指定復(fù)數(shù)的實部和虛部(類私有數(shù)據(jù)成

2、員為double類型:real和imag)為2.5及3.7,對象c2通過構(gòu)造函數(shù)直接指定復(fù)數(shù)的實部和虛部為4.2及6.5;(2)定義友元運算符重載函數(shù),它以c1、c2對象為參數(shù),調(diào)用該函數(shù)時,能返回兩個復(fù)數(shù)對象相加操作;(3)定義成員函數(shù)print,調(diào)用該函數(shù)時,以格式“(real,imag)”輸出當(dāng)前對象的實部和虛部,例如:對象的實部和虛部分別為4.2和6.5,則調(diào)用print函數(shù)輸出格式為:(4.2,6.5);(4)編寫主程序,計算出復(fù)數(shù)對象c1和c2相加結(jié)果,并將其結(jié)果輸出。程序3. 寫一個程序,定義抽象基類Container,由它派生出3個派生類:Sphere(球體)、Cylinder

3、(圓柱體)、Cube(正方體)。用虛函數(shù)分別計算幾種圖形的表面積和體積。程序4.編寫程序:定義抽象基類Shape,area( )為求圖形面積的虛成員函數(shù)。由它派生出三個派生類:Circle(圓形)、Rectangle(長方形)、和Triangle (三角形),用虛函數(shù)area分別計算各種圖形的面積。在主函數(shù)中,分別創(chuàng)建派生類的對象并計算其面積,求出它們的面積的和。要求用基類指針數(shù)組,使它的每一個元素指向一個派生類的對象,以體現(xiàn)多態(tài)性。程序5.計算正方體、球體、圓柱體的體積。要求:定義基類shape,在其中定義求體積的純虛函數(shù)volume,并定義一個數(shù)據(jù)成員r,它可作為球體的半徑、正方體的邊長以

4、及圓柱體的底面圓半徑。由shape類派生出3個類,分別是正方體類、球體類和圓柱體類,在這3個類中都具有求體積的重定義版本。在主函數(shù)中統(tǒng)一求3種對象的體積,實現(xiàn)多態(tài)性。二、問題分析(類的數(shù)據(jù)成員、成員函數(shù)等的確定,對象的創(chuàng)建等)程序1:首先定義一個數(shù)組類,數(shù)據(jù)成員是數(shù)組c23,成員函數(shù)有運算符重載函數(shù)shuzu operator+(int b23)和shuzu operator-(int b23),當(dāng)然還有輸出函數(shù)show。在主函數(shù)中創(chuàng)建對象x,y,z。當(dāng)然也要按要求輸入數(shù)組。程序2:首先定義類complex,數(shù)據(jù)成員有real和imag,成員函數(shù)有友元運算符重載函數(shù)friend complex

5、 operator+(complex &a,complex &b)和輸出函數(shù)print。在主函數(shù)中創(chuàng)建對象c1和c2,最后運算結(jié)果。程序3:首先定義抽象基類Container,數(shù)據(jù)成員有r,成員函數(shù)有友元虛函數(shù)virtual void s_v()由它公有派生出3個派生類:Sphere(球體)、Cylinder(圓柱體)、Cube(正方體)。在主函數(shù)中分別創(chuàng)建各派生類的對象s1,c1和,c2。用虛函數(shù)virtual void s_v()分別計算3種圖形的表面積和體積。程序4:首先定義抽象基類Shape,數(shù)據(jù)成員有a和b,area( )為求圖形面積的虛成員函數(shù)。由它公有派生出三個派生類:Circl

6、e(圓形)、Rectangle(長方形)、和Triangle (三角形),用虛函數(shù)area分別計算各種圖形的面積。在主函數(shù)中,創(chuàng)建基類指針ptr,分別創(chuàng)建派生類的對象c1, r1 和t1。Ptr指針指向派生類的對象,用area()計算其面積。程序5:首先定義基類shape,在其中定義求體積的純虛函數(shù)volume,并定義一個數(shù)據(jù)成員r,它是球體的半徑、正方體的邊長以及圓柱體的底面圓半徑。由shape類派生出3個類,分別是正方體類、球體類和圓柱體類,圓柱體增加數(shù)據(jù)成員h,在這3個類中都具有求體積的重定義版本。在主函數(shù)中創(chuàng)建對象s1 ,c1 和c2,并調(diào)用各自的純虛函數(shù)volume計算體積。三、程序

7、實現(xiàn)(完整程序)程序1:#include#includeusing namespace std;class shuzupublic:shuzu()for(int i=0;i2;i+)for(int j=0;j3;j+)cij=0;shuzu(int a23)for(int i=0;i2;i+)for(int j=0;j3;j+)cij=aij;shuzu operator+(int b23)shuzu d;for(int i=0;i2;i+)for(int j=0;j3;j+) d.cij=cij+bij;return d;shuzu operator-(int b23) shuzu e;fo

8、r(int i=0;i2;i+)for(int j=0;j3;j+) e.cij=cij-bij;return e;void show()cout運算結(jié)果為:endl;for(int i=0;i2;i+)for(int j=0;j3;j+)coutcijt;coutendl; private:int c23;int main()int m23=3,7,5,8,3,2;cout原數(shù)組為:endl;for(int i=0;i2;i+)for(int j=0;j3;j+)coutmijt;coutendl;int n23,k;for(int i=0;i2;i+)for(int j=0;jk;nij=

9、k;cout輸入數(shù)組為:endl;for(int i=0;i2;i+)for(int j=0;j3;j+)coutnijt;coutendl;shuzu x(m);shuzu y;y=x+n;y.show();shuzu z;z=x-n;z.show();getchar();getchar();return 0;程序2:#include#includeusing namespace std;class complex public:complex(double r=0,double i=0);friend complex operator+(complex &a,complex &b);voi

10、d print()cout(real,imag)endl; private:double real;double imag;complex operator+(complex &a,complex &b)complex c;c.real=a.real+b.real;c.imag=a.imag+b.imag;return c;complex:complex(double r,double i)real=r;imag=i;int main()complex c1(2.5,3.7);system(color 2C); cout第一個復(fù)數(shù):endl;c1.print();complex c2(4.2,

11、6.5);cout第二個復(fù)數(shù):endl;c2.print();complex d;d=c1+c2;cout相加后結(jié)果:endl;d.print();getchar();getchar();return 0;程序3:#include#includeusing namespace std;class Containerpublic:Container(double r1)r=r1;virtual void s_v()cout計算圖形表面積和體積:endl;protected:double r;class Sphere:public Containerpublic:Sphere(double r1)

12、:Container(r1)void s_v()const double pi=3.;cout球體的半徑是:rendl;cout表面積是4*pi*r*rendl;cout體積是:(4/3)*pi*r*r*rendl;class Cylinder:public Containerpublic:Cylinder(double r1,double h1):Container(r1)h=h1;void s_v()const double pi=3.;cout圓柱體的半徑是:r高是:hendl;cout表面積是(2*pi*r*r+2*pi*r*h)endl;cout體積是:h*pi*r*rendl;pr

13、ivate:double h;class Cube:public Containerpublic:Cube(double r1):Container(r1)void s_v()cout正方體的邊長是:rendl;cout表面積是6*r*rendl;cout體積是:r*r*rendl;int main()system(color 3D);Sphere s1(2);s1.s_v();Cylinder c1(3,4);c1.s_v();Cube c2(5);c2.s_v();getchar();getchar();return 0;程序4:#include#includeusing namespac

14、e std;class shapepublic:shape(double x,double y)a=x;b=y;virtual void area()=0;protected:double a;double b;class Circle:public shapepublic:Circle(double x):shape(x,x)void area()const double pi=3.;cout圓的半徑是:aendl;cout面積是:pi*a*aendl;class Rectangle:public shapepublic:Rectangle(double x,double y):shape(

15、x,y)void area()const double pi=3.;cout矩形的長是:a寬是:bendl;cout面積是:a*bendl;class Triangle:public shapepublic:Triangle(double x,double y):shape(x,y)void area()cout三角形的底是:a高是bendl;cout面積是:0.5*a*barea();ptr=&r1;ptr-area();ptr=&t1;ptr-area();getchar();getchar();return 0; 程序5:#include#includeusing namespace s

16、td;class shapepublic:shape(double r1)r=r1;virtual void volume()=0;protected:double r;class Sphere:public shapepublic:Sphere(double r1):shape(r1)void volume()const double pi=3.;cout球體的半徑是:rendl;cout體積是:(4/3)*pi*r*r*rendl;class Cylinder:public shapepublic:Cylinder(double r1,double h1):shape(r1)h=h1;vo

17、id volume()const double pi=3.;cout圓柱體的半徑是:r高是:hendl;cout體積是:h*pi*r*rendl;private:double h;class Cube:public shapepublic:Cube(double r1):shape(r1)void volume()cout正方體的邊長是:rendl;cout體積是:r*r*rendl;int main()system(color 3D);Sphere s1(2);s1.volume();Cylinder c1(3,4);c1.volume();Cube c2(5);c2.volume();getchar();getchar();return 0;4、 調(diào)試與運行程序1的運行結(jié)果:程序2的運行結(jié)果:程序3的運行結(jié)果:程序4的運行結(jié)果:程序5的運行結(jié)果:5、 實驗總結(jié): 1、學(xué)會了面向?qū)ο蟪绦虻亩鄳B(tài)性。掌握了運算符的重載和運用虛函數(shù),當(dāng)然對類的繼

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論