面向物件程式設計之.h和.cpp檔案分開編寫
阿新 • • 發佈:2019-02-11
對於一個小程式,一般不需要編寫標頭檔案,但是對於一個複雜的大專案,模組化編寫程式,便於理解,且容易下手,將問題分解成一小塊一小塊,逐個擊破:
抽象一個點,一個圓,並判斷點與圓的關係。(在圓內還是圓外)
h檔案進行類的宣告;
cpp檔案為類的實現細節;主要注重的細節為:
在類外定義成員函式;
使用域作用符;
工程程式碼如下:
//MyCircle.h
#pragma once
#include"MyPoint.h"
class MyCircle
{
public:
void setCir(double x, double y, double r);
public:
charchar * judge(double x, double y);
charchar * judge(MyPoint &p);
private:
double x1, y1; //圓心座標
double r1; //圓半徑
};
//MyPoint.h
#pragma once
class MyPoint
{
private:
double x0, y0; //點座標
public:
void setPoint(double x, double y);
double getX0();
double getY0();
};
//MyCircle.cpp
#include "MyCircle.h"
void MyCircle::setCir(double x, double y, double r)
{
x1 = x; y1 = y; r1 = r;
}
char* MyCircle::judge(double x, double y)
{
double s = (x1 - x)*(x1 - x) + (y1 - y)*(y1 - y) - r1*r1;
if (s > 0)
{
return "在圓外";
}
else
{
return "在圓內";
}
}
char* MyCircle::judge(MyPoint &p)
{
double s = (x1 - p.getX0())*(x1 - p.getX0()) + (y1 - p.getY0())*(y1 - p.getY0()) - r1*r1;
if (s > 0)
{
return "在圓外";
}
else
{
return "在圓內";
}
}
//MyPoint.cpp
#include "MyPoint.h"
void MyPoint::setPoint(double x, double y)
{
x0 = x;
y0 = y;
}
double MyPoint::getX0()
{
return x0;
}
double MyPoint::getY0()
{
return y0;
}
//MainTestClass.cpp
#include "iostream"
#include "MyCircle.h"
#include "MyPoint.h"
using namespace std;
void main()
{
MyCircle c1;
MyPoint p1;
c1.setCir(2, 2, 3);
p1.setPoint(1, 1);
cout << c1.judge(p1.getX0(), p1.getY0()) << endl;
cout << c1.judge(p1) << endl;
system("pause");
}