實驗內容及目的
實驗目的:理解和掌握c++物件和類的繼承和派生。
實驗內容:在程式設計練習中,我們建立了乙個mypoint類來建模二維空間中的乙個點。mypoint類包含兩個屬性x和y,表示x軸和y軸的座標,還包含x和y的獲取器函式,及返回兩點之間距離的函式。建立乙個名為3dpoint的類,來建模三維空間中的乙個點。將3dpoint設計為mypoint的乙個派生類,包含如下額外屬性:
(1) 乙個名為z的資料域,表示z軸座標。
(2) 乙個無參建構函式,建立乙個座標為(0,0,0)的點。
(3) 乙個帶引數的建構函式,按指定座標建立乙個點。
(4) z的獲取器函式。
(5) 覆蓋distance函式,返回三維空間中兩點之間的距離。
(6) 乙個名為getperimeter()的函式,返回矩形的周長。
畫出這兩個類的uml圖,實現類。編寫乙個測試程式,它建立兩個點,座標為(0,0,0)和(10,30,25.5),並輸出兩點之間的距離。
2 實驗步驟
(1) 準備好2dmypoint的有用的程式**以作為框架
(2) 新增額外的域和方法,以及構造方法和要覆蓋的方法宣告
(3) 在主函式中實現上述宣告的構造方法和普通方法
(4) 在test3d.cpp
原始檔裡建立mypoint3d例項,然後通過建立的例項呼叫類覆蓋的方法,測試該類的方法實現是否正確
3 源**
#include
#include
using namespace std;
class mypoint
public:
mypoint();
mypoint(double,double);
double getx();
double gety();
double distance(mypoint);
double x,y;
class mypoint3d:public mypoint
public:
mypoint3d();
mypoint3d(double,double,double);
double getz();
double distance(mypoint3d);
double z;
mypoint::mypoint()
x=0;
y=0;
mypoint::mypoint(double xx,double yy)
x=xx;
y=yy;
double mypoint::getx()
return x;
double mypoint::gety()
return y;
double mypoint::distance(mypoint c)
double n;
n=sqrt((x-c.getx())*(x-c.getx())+(y-c.gety())*(y-c.gety()));
return n;
mypoint3d::mypoint3d()
x=0;
y=0;
z=0;
mypoint3d::mypoint3d(double xx,double yy,double zz)
x=xx;
y=yy;
z=zz;
double mypoint3d::getz()
return z;
double mypoint3d::distance(mypoint3d d)
double n;
n=sqrt((x-d.getx())*(x-d.getx())+(y-d.gety())*(y-d.gety())+(z-d.getz())*(z-d.getz()));
return n;
int main()
mypoint3d d1;
mypoint3d d2(10,30,25.5);
cout << "兩點間的距離為:" << d1.distance(d2) << endl;
return 0;
4 遇到的問題與分析
本次實驗,因為是擴充套件已有類而來,所以基本沒有遇到什麼問題,很順利就得到了實驗結果,在完成這次實驗後,我分析了一下,這次實驗順利完成的原因,一方面,可以模仿已有類進行擴充套件,給我們實驗帶來了方便之處,另一方面,老師有條不紊的實驗指導,也是這次實驗能如此迅速完成的原因之一。
5 實驗體會
通過本次實驗,我更深入地理解了c++物件和類的繼承與派生。因為這次實驗,是在之前乙個2dmypoint類的基礎上,把2d擴充套件成3d,當然,你可以重新寫乙個3d的類,這也可以實現要求,但理解了繼承和派生以後,事情就變得非常簡單了,只要讓新的3d類繼承2d類,然後再覆蓋其distance函式,很快就完成了。
C 實驗小作業
定義乙個box 盒子 類,在該類定義中包括以下資料成員和成員函式。資料成員 length 長 width 寬 height 高 成員函式 建構函式box,設定盒子的長寬和高三個初始資料 成員函式setbox對資料成員設值 成員函式volume計算盒子的體積。在main函式中,要求建立box物件,輸入...
C 程式設計小實驗 (實驗報告)
實驗 編寫乙個人員資訊管理系統。這個系統的功能是 互動式地實現校園人員資訊的錄入與顯示。分析 學校裡,主要有四類人員 大學本科學生 教師 研究生和助教。大學本科生每週有固定的學時數。教師除了固定的學時數外,還有每週的教學時數。研究生除了固定的學時數外,每週還可以自由做一定的研究。助教除了上課外,還要...
實驗1簡單的C 程式
實驗目的和要求 1熟悉code blocks 16.01編譯系統的常用功能 2.學會使用code blocks 16.01編譯系統實現簡單的c 程式 3.熟悉c 程式的基本結構,學會使用簡單的輸入 輸出操作 實驗內容 1.編譯下列程式,改正所出現的錯誤資訊,並寫出輸出結果 錯誤程式如下 1 sy1 ...