1. 程式人生 > >面向物件程式設計之.h和.cpp檔案分開編寫

面向物件程式設計之.h和.cpp檔案分開編寫

對於一個小程式,一般不需要編寫標頭檔案,但是對於一個複雜的大專案,模組化編寫程式,便於理解,且容易下手,將問題分解成一小塊一小塊,逐個擊破:

抽象一個點,一個圓,並判斷點與圓的關係。(在圓內還是圓外)
這裡寫圖片描述

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");  
}