實(shí)驗(yàn)三多態(tài)性_第1頁
實(shí)驗(yàn)三多態(tài)性_第2頁
實(shí)驗(yàn)三多態(tài)性_第3頁
實(shí)驗(yàn)三多態(tài)性_第4頁
實(shí)驗(yàn)三多態(tài)性_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

河南**大學(xué)實(shí)驗(yàn)報(bào)告課程名稱面對(duì)對(duì)象程序設(shè)計(jì)名稱實(shí)驗(yàn)三多態(tài)性院系_信息工程學(xué)院__班級(jí)__計(jì)科172學(xué)生姓名_**__實(shí)驗(yàn)三多態(tài)性一.實(shí)驗(yàn)?zāi)康谋緦?shí)驗(yàn)的目的是使學(xué)生了虛函數(shù)的作用,掌握多態(tài)的概念、編譯時(shí)多態(tài)、運(yùn)行時(shí)多態(tài),掌握運(yùn)算符重載和虛函數(shù)的使用方法。二.實(shí)驗(yàn)環(huán)境VisualC++6.0及以上版本。三.實(shí)驗(yàn)內(nèi)容熟悉掌握C++多態(tài)的有關(guān)知識(shí)。根據(jù)老師布置的實(shí)驗(yàn)題目,提前分析題目規(guī)定所需要的類,設(shè)計(jì)好解決題目規(guī)定需要的對(duì)象個(gè)數(shù),設(shè)計(jì)解決問題需要的主函數(shù)等。題目能夠從下列題目中選擇一種。1.定義一種實(shí)數(shù)類Real,類中涉及一種數(shù)據(jù)組員real,構(gòu)造函數(shù)、display()函數(shù)以及重載的+、-、*、/運(yùn)算符。用公有繼承方式聲明一種復(fù)數(shù)類Complex,該類涉及兩個(gè)數(shù)據(jù)組員real,image,并重載Real類的函數(shù)和+、-、*、/運(yùn)算符。編寫一種復(fù)數(shù)四則運(yùn)算計(jì)算器。2.Shape是一種幾何圖形的基類,它最少有求本身周長函數(shù)Circumference()和求本身面積函數(shù)Area()。從Shape類派生出Circle類、Ellipse類、Triangle類和Rectangle類,分別繼承基類Shape的Circumference()和Area(),并增加新的組員。編寫主函數(shù),定義各派生類對(duì)象,求多派生類對(duì)象的周長之和、面積之和。3.其它和本實(shí)驗(yàn)?zāi)康南喾念}目,根據(jù)學(xué)生實(shí)際狀況增加對(duì)應(yīng)的題目,但題目難度不應(yīng)低于以上兩個(gè)題目。注意:從以上題目中選擇一種作為實(shí)驗(yàn)題目。選擇題目2四、實(shí)驗(yàn)原理1.按照題目規(guī)定分析解決問題需要的類;2.進(jìn)行類的設(shè)計(jì)并實(shí)現(xiàn);3.分析解決問題需要定義的對(duì)象及對(duì)象間的消息傳遞關(guān)系;4.設(shè)計(jì)主函數(shù)實(shí)現(xiàn)題目規(guī)定。五、數(shù)據(jù)構(gòu)造和程序設(shè)計(jì)實(shí)驗(yàn)中出現(xiàn)的問題以及解決方案:問題一:改為實(shí)驗(yàn)總結(jié)學(xué)習(xí)使用虛函數(shù)實(shí)驗(yàn)動(dòng)態(tài)多態(tài)性。而虛函數(shù)就是在基類中被核心字virtual闡明,并在派生類中重新定義的函數(shù),且在派生類中重工業(yè)新定義時(shí),函數(shù)原型,涉及返回類型、函數(shù)名、參數(shù)個(gè)數(shù)與參數(shù)類型的次序,都必須與基類中的完全相似。另外,構(gòu)造函數(shù)不能是虛函數(shù),但析構(gòu)函數(shù)能夠說虛函數(shù)。函數(shù)的重載辦法有一參數(shù)個(gè)數(shù)相似,但是類型不同;二參數(shù)個(gè)數(shù)不同;三const(常量)源代碼#include<iostream>#include<cmath>usingnamespacestd;constdoublePI=3.1415926;classShape{ public: virtualdoubleCircumference()=0; virtualdoubleArea()=0; virtualvoidshow(){};};classCircle:publicShape{ public: Circle(doublea):Shape(){ radius=a; } Circle(Circle&c){ radius=c.radius; } doubleCircumference(){ return2*PI*radius; } doubleArea(){ returnPI*radius*radius; } voidshow(){ doublea,b; a=Circumference(); b=Area(); cout<<"圓周長:"<<a<<"圓面積"<<b<<endl; } private: double radius;};classEllipse:publicShape{ public: Ellipse(doublea,doubleb):Shape(){ Lradius=a; Wradius=b; } Ellipse(Ellipse&c){ Lradius=c.Lradius; Wradius=c.Wradius; } doubleCircumference(){ return(Wradius/Lradius)*(Lradius+Wradius); } doubleArea(){ returnPI*Lradius*Wradius; } voidshow(){ doublea,b; a=Circumference(); b=Area(); cout<<"橢圓周長:"<<a<<"橢圓面積"<<b<<endl; } private: double Lradius; doubleWradius;};classTriangle:publicShape{ public: Triangle(doublea,doubleb,doublec):Shape(){ aLength=a; bLength=b; cLength=c; if(a+b<=c||a+c<=b||b+c<=a) { cout<<"三角形兩邊之和需不不大于第三邊!"<<endl; exit(0); } } Triangle(Triangle&c){ aLength=c.aLength; bLength=c.bLength; cLength=c.cLength; } doubleCircumference(){ returnaLength+bLength+cLength; } doubleArea(){ doublep; p=(aLength+bLength+cLength)/2.0; returnsqrt(p*(p-aLength)*(p-bLength)*(p-cLength)); } voidshow(){ doublea,b; a=Circumference(); b=Area(); cout<<"三角形周長:"<<a<<"三角形面積"<<b<<endl; } private: double aLength; doublebLength; doublecLength;};classRectangle:publicShape{ public: Rectangle(doublea,doubleb):Shape(){ Length=a; Width=b; } Rectangle(Rectangle&c){ Length=c.Length; Width=c.Width; } doubleCircumference(){ return2*(Length+Width); } doubleArea(){ returnWidth*Length; } voidshow(){ doublea,b; a=Circumference(); b=Area(); cout<<"長方形周長:"<<a<<"長方形面積"<<b<<endl; } private: double Length; doubleWidth;};intmain(){ inti; doublea,b,c,d,e; doublecircumference,area; Shape*s[4]; cout<<"圓的半徑"<<endl; cin>>a; Circlecircle(a); cout<<"橢圓長半徑和短半徑"<<endl; cin>>b>>c; Ellipseellipse(b,c); cout<<"三角形三邊:"<<endl; cin>>a>>b>>c; Triangletriangle(a,b,c); cout<<"長方形的長和寬:"<<endl; cin>>d>>e; Rectanglerectangle(d,e); s[0]=&circle; s[1]=&ellipse; s[2]=▵ s[3]=&re

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論