C++类和对象的封装 点和圆的案例

主要练习 :在类中可以让另一个类作为本类的成员。

案例:判断点和圆的位置关系。

一、第一种直接方法

using namespace std;
#include <iostream>
class point
{
public:
    void setx(int x)
    {
        m_x = x;
    }
    int getx()
    {
        return m_x;
    }
    void sety(int y)
    {
        m_y = y;
    }
    int gety()
    {
        return m_y;
    }
private:
    int m_x;
    int m_y;
};
class circle
{
public:
    void setr(int r)
    {
        m_r = r;
    }
    int getr()
    {
        return m_r;
    }
    void setcenter(point center)
    {
        m_center = center;
    }
    point getcenter()
    {
        return m_center;
    }
private:
    int m_r;
    point m_center;
};
void compare(circle &c,point &p)
{
    int disance=
    (c.getcenter().getx() - p.getx())* (c.getcenter().getx() - p.getx()) +
        (c.getcenter().gety() - p.gety()) * (c.getcenter().gety() - p.gety());
    int rdisance=c.getr()* c.getr();
    if (rdisance == disance) cout << "点在圆上";
    else if (rdisance > disance) cout << "点在圆内";
    else cout << "点在圆外";
}
int main() {
    point p;
    circle c;
    c.setr(20);//半径长度
    point senter;
    senter.setx(0);//圆的坐标
    senter.sety(0);
    c.setcenter(senter);
    p.setx(10);//点的坐标
    p.sety(10);
    compare(c,p);
    return 0;
}

二、分开代码

源.cpp中的代码

using namespace std;
#include <iostream>
#include "point.h"
#include "circle.h"
void compare(circle &c,point &p)
{
    int disance=
    (c.getcenter().getx() - p.getx())* (c.getcenter().getx() - p.getx()) +
        (c.getcenter().gety() - p.gety()) * (c.getcenter().gety() - p.gety());
    int rdisance=c.getr()* c.getr();
    if (rdisance == disance) cout << "点在圆上";
    else if (rdisance > disance) cout << "点在圆内";
    else cout << "点在圆外";
}
int main() {
    point p;
    circle c;
    c.setr(20);
    point senter;
    senter.setx(0);
    senter.sety(0);
    c.setcenter(senter);
    p.setx(10);
    p.sety(10);
    compare(c,p);
    return 0;
}

point.h中的代码

#pragma once
#include <iostream>
using namespace std;
class point
{
public:
    void setx(int x);
    int getx();
    void sety(int y);
    int gety();
private:
    int m_x;
    int m_y;
};

point.cpp中的代码

#include "point.h"
void point ::setx(int x)
{
    m_x = x;
}
int point::getx()
{
    return m_x;
}
void point::sety(int y)
{
    m_y = y;
}
int point::gety()
{
    return m_y;
}
    

circle.h中的代码

#pragma once
#include <iostream>
using namespace std;
#include "point.h"
class circle
{
public:
    void setr(int r);
    int getr();
    void setcenter(point center);
    point getcenter();
private:
    int m_r;
    point m_center;
};

circle.cpp中的代码

#include "circle.h"
#include "point.h"
using namespace std;
    void circle::setr(int r)
    {
        m_r = r;
    }
    int circle::getr()
    {
        return m_r;
    }
    void circle::setcenter(point center)
    {
        m_center = center;
    }
    point circle::getcenter()
    {
        return m_center;
    }

猜你喜欢

转载自www.cnblogs.com/liushipeng648/p/12555813.html