距离和中点 - 属于Point并属于Line?

时间:2018-01-06 19:19:17

标签: java oop computer-science

从面向对象编程的角度来看,给出了两个类:Line(两个Point)和Point(两个浮点数)。哪个应该包含distance()函数,哪个应该包含midpoint()

我最初的想法是midpoint()应该属于Line,而distance()应该属于Point,因为Point应该知道它自己与另一个点之间的距离。虽然midpoint()更多是第三人称计算,但它会检查两个点。

然而,当我想到它时,我意识到Point知道它的X和Y坐标。所以这两个函数都应该属于Point。这也可以节省getX()getY() getter的创建。 Line可以为这些函数调用这些函数。

或者Line可能同时拥有这两个功能?

哪个是对的?或..还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

你必须使距离功能& Line类中的中点函数! 因为这两个功能都需要两点。 下面给出代码示例,类点有两个名为' x'的浮动变量。 &安培; ' Y' ,getx& gety函数。其他类Line汇总了point class&有两个对象p1& p2用于计算两点之间的距离&中点。

class point
{

    float x, y;

public:
    float getx()
    {
        return x;
    }

    float gety()
    {
        return y;
    }

    void setx(float _x)
    {
        x=_x;
    }

    void sety(float _y)
    {
        y=_y;
    }
};

class line
{

    point p1, p2;

public:

    void distance()
    {
        cout << "Distance : " << sqrt(pow((p2.getx() - p1.getx()), 2) + pow((p2.gety() - p1.getx()), 2));
    }

    void midpoint()
    {
        cout << "Mid point : (" << ((p1.getx() + p2.getx()) / 2) << " , " << ((p1.gety() + p2.gety()) / 2) << " )";
    }
};

void main()
{
    // calling object
}