




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第C++類和對象深入探索之分文件編寫點和圓的關系詳解目錄創(chuàng)建圓心類創(chuàng)建圓類判斷點圓關系函數最終實現總結上一篇封裝直達
創(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;
};
把圓心的橫縱坐標設為私有,公共屬性寫了兩對成員方法,用來給圓心屬性賦值和讀取,這里只寫了方法的聲明,具體實現將在point.cpp文件實現。
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頭文件中定義成員方法的具體實現了,引入point.h頭文件,在四個方法的返回值類型和方法名面前加::,表示屬于圓心類的方法,然后完成賦值和取值的實現。
創(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類似,設置了圓心和圓半徑的屬性并設置為私有;在公共權限下定義為半徑賦值和取值的方法;對于圓心,我引入point.h的頭文件,在圓類中創(chuàng)建了圓心m_center,設置圓心方法中采用引用傳參,將圓心類完成賦值的圓心傳入到圓類中;獲取圓心的途徑是通過getCenter方法調用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的方法完成具體實現。
判斷點圓關系函數
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"點在圓內"endl;
}
數學上點和圓的關系是圓心到點的距離和半徑的比較,這里我把等號兩邊平方,比較兩個數據的大小即可;若距離大于半徑,點在圓外;距離等于半徑,點在圓上;距離小于半徑,點在圓內;relative函數傳入Circle類和Point類的對象,分別計算圓心到點距離的平方distance和半徑的平方rDistance,利用多重If語句輸出不同結果即可。
最終實現
#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"點在圓內"endl;
intmain()
intx=0,y=0,a=0,b=0,r=0;
CircleC;
Pointcenter,P;
cout"圓心橫坐標x為:";cinx;coutendl;
cout"圓心縱坐標y為:";ciny;coutendl;
center.setM_x(x);
center.setM_y(y);
C.setCenter(center);
cout"此圓半徑r為:";cinr;coutendl;
C.setM_r(r);
cout"點橫坐標x為:";cina;coutendl;
cout"點縱坐標y為:";cinb;coutendl;
P.setM_x(a);
P.setM_y(b);
relative(C,P);
}
主函數創(chuàng)建Circle類對象C,和Point類對象P,center;通過set方法設置center點的坐標并傳入C的setCenter方法中,這樣圓心數據賦值完成,然后利用相同方法對圓半徑以及點賦值,最后調用re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 體驗館建設合同范例
- 借款后抵押合同范例
- 不給按揭合同范例
- ktv簽約合同范例
- ktv系統(tǒng)合同范例
- 停車場投資合同范例
- 倉庫部門合同范例
- 信托常用合同范例
- 保溫房合同范例
- 公園游船轉讓合同范例
- 2025屆貴州省遵義第四中學高考全國統(tǒng)考預測密卷英語試卷含解析
- 2025年北京市豐臺區(qū)九年級初三一模物理試卷(含答案)
- 中醫(yī)內科學胸痹課件
- 湖北省武漢市2025屆高中畢業(yè)生四月調研考試數學試卷及答案(武漢四調)
- 2025年四川省自然資源投資集團有限責任公司招聘筆試參考題庫附帶答案詳解
- 建筑工程中BIM技術應用論文
- 2024年湖南省長沙市中考地理試卷真題(含答案解析)
- 24春國家開放大學《建筑測量》形考任務實驗1-6參考答案
- 石子檢驗報告(共5頁)
- 地基承載力與擊數對照表(輕)
- 供應商調查表(模板)
評論
0/150
提交評論