




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供應(yīng)鏈透明度教育區(qū)塊鏈技術(shù)的核心應(yīng)用
- 醫(yī)療設(shè)備維修流程的優(yōu)化與實施
- 辦公自動化在醫(yī)療物資管理中的應(yīng)用研究
- 以客戶為中心構(gòu)建基于區(qū)塊鏈的供應(yīng)金融服務(wù)體驗
- 醫(yī)療科技發(fā)展下的倫理決策新挑戰(zhàn)
- 小升初工程畫圖教案課件
- 東營吊車出租合同范例
- 中班幼兒教育心得體會模版
- 保險計劃服務(wù)合同范例
- 樂昌勞動合同范例
- 無機化學(xué)(下)智慧樹知到課后章節(jié)答案2023年下華東理工大學(xué)
- 防止氮氣危害安全培訓(xùn)
- 2023年韶關(guān)市始興縣事業(yè)單位真題
- 南開大學(xué)經(jīng)濟(jì)學(xué)院博士入學(xué)考試試題
- (蘇教版)六年級下冊《扇形統(tǒng)計圖》測試題
- 公路建設(shè)項目變更程序及管理辦法
- 《衛(wèi)生事業(yè)管理學(xué)》練習(xí)考試題庫(100題)
- 新版FMEA(AIAG-VDA第一版)PFMEA過程FMEA課件PPT
- 運維服務(wù)質(zhì)量保障措施9948
- 煤礦井下低壓電網(wǎng)保護(hù)裝置整定(原)-課件
評論
0/150
提交評論