C 的小實驗(1)

2021-06-22 10:14:17 字數 2361 閱讀 9407

實驗內容及目的

實驗目的:理解和掌握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 ...