C++類和對象深入探索之分文件編寫點和圓的關(guān)系詳解_第1頁
C++類和對象深入探索之分文件編寫點和圓的關(guān)系詳解_第2頁
C++類和對象深入探索之分文件編寫點和圓的關(guān)系詳解_第3頁
C++類和對象深入探索之分文件編寫點和圓的關(guān)系詳解_第4頁
C++類和對象深入探索之分文件編寫點和圓的關(guān)系詳解_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第C++類和對象深入探索之分文件編寫點和圓的關(guān)系詳解目錄創(chuàng)建圓心類創(chuàng)建圓類判斷點圓關(guān)系函數(shù)最終實現(xiàn)總結(jié)上一篇封裝直達(dá)

創(chuàng)建圓心類

point.h

#pragmaonce

#includeiostream

usingnamespacestd;

//創(chuàng)建圓心類

classPoint

public:

voidsetM_x(intx);

intgetM_x();

voidsetM_y(inty);

intgetM_y();

private:

intm_x;

intm_y;

};

把圓心的橫縱坐標(biāo)設(shè)為私有,公共屬性寫了兩對成員方法,用來給圓心屬性賦值和讀取,這里只寫了方法的聲明,具體實現(xiàn)將在point.cpp文件實現(xiàn)。

point.cpp

#include"point.h"

voidPoint::setM_x(intx)

m_x=x;

intPoint::getM_x()

returnm_x;

voidPoint::setM_y(inty)

m_y=y;

intPoint::getM_y()

returnm_y;

}

這個文件就是point頭文件中定義成員方法的具體實現(xiàn)了,引入point.h頭文件,在四個方法的返回值類型和方法名面前加::,表示屬于圓心類的方法,然后完成賦值和取值的實現(xiàn)。

創(chuàng)建圓類

Circle.h

#pragmaonce

#includeiostream

#include"point.h"

usingnamespacestd;

//創(chuàng)建Circle類

classCircle

public:

voidsetM_r(intr);

intgetM_r();

voidsetCenter(Pointcenter);

PointgetCenter();

private:

intm_r;

Pointm_center;

};

這里和point.h類似,設(shè)置了圓心和圓半徑的屬性并設(shè)置為私有;在公共權(quán)限下定義為半徑賦值和取值的方法;對于圓心,我引入point.h的頭文件,在圓類中創(chuàng)建了圓心m_center,設(shè)置圓心方法中采用引用傳參,將圓心類完成賦值的圓心傳入到圓類中;獲取圓心的途徑是通過getCenter方法調(diào)用point類中的get方法。

Circle.cpp

#include"Circle.h"

voidCircle::setM_r(intr)

m_r=r;

intCircle::getM_r()

returnm_r;

voidCircle::setCenter(Pointcenter)

m_center=center;

PointCircle::getCenter()

returnm_center;

}

引入Circle.h頭文件,將.h的方法完成具體實現(xiàn)。

判斷點圓關(guān)系函數(shù)

voidrelative(Circlec,Pointp)

//圓心到點距離的平方為distance

intdistance=

(c.getCenter().getM_x()-p.getM_x())*(c.getCenter().getM_x()-p.getM_x())+

(c.getCenter().getM_y()-p.getM_y())*(c.getCenter().getM_y()-p.getM_y());

//半徑的平方rDistance

intrDistance=c.getM_r()*c.getM_r();

if(distancerDistance)cout"點在圓外"endl;

elseif(distance==rDistance)cout"點在圓上"endl;

elsecout"點在圓內(nèi)"endl;

}

數(shù)學(xué)上點和圓的關(guān)系是圓心到點的距離和半徑的比較,這里我把等號兩邊平方,比較兩個數(shù)據(jù)的大小即可;若距離大于半徑,點在圓外;距離等于半徑,點在圓上;距離小于半徑,點在圓內(nèi);relative函數(shù)傳入Circle類和Point類的對象,分別計算圓心到點距離的平方distance和半徑的平方rDistance,利用多重If語句輸出不同結(jié)果即可。

最終實現(xiàn)

#include"Circle.h"

voidrelative(Circlec,Pointp)

//圓心到點距離的平方為distance

intdistance=

(c.getCenter().getM_x()-p.getM_x())*(c.getCenter().getM_x()-p.getM_x())+

(c.getCenter().getM_y()-p.getM_y())*(c.getCenter().getM_y()-p.getM_y());

//半徑的平方rDistance

intrDistance=c.getM_r()*c.getM_r();

if(distancerDistance)cout"點在圓外"endl;

elseif(distance==rDistance)cout"點在圓上"endl;

elsecout"點在圓內(nèi)"endl;

intmain()

intx=0,y=0,a=0,b=0,r=0;

CircleC;

Pointcenter,P;

cout"圓心橫坐標(biāo)x為:";cinx;coutendl;

cout"圓心縱坐標(biāo)y為:";ciny;coutendl;

center.setM_x(x);

center.setM_y(y);

C.setCenter(center);

cout"此圓半徑r為:";cinr;coutendl;

C.setM_r(r);

cout"點橫坐標(biāo)x為:";cina;coutendl;

cout"點縱坐標(biāo)y為:";cinb;coutendl;

P.setM_x(a);

P.setM_y(b);

relative(C,P);

}

主函數(shù)創(chuàng)建Circle類對象C,和Point類對象P,center;通過set方法設(shè)置center點的坐標(biāo)并傳入C的setCenter方法中,這樣圓心數(shù)據(jù)賦值完成,然后利用相同方法對圓半徑以及點賦值,最后調(diào)用re

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論