从面向对象编程的角度来看,给出了两个类:Line(两个Point)和Point(两个浮点数)。哪个应该包含distance()
函数,哪个应该包含midpoint()
?
我最初的想法是midpoint()
应该属于Line,而distance()
应该属于Point,因为Point应该知道它自己与另一个点之间的距离。虽然midpoint()
更多是第三人称计算,但它会检查两个点。
然而,当我想到它时,我意识到Point知道它的X和Y坐标。所以这两个函数都应该属于Point。这也可以节省getX()
和getY()
getter的创建。 Line可以为这些函数调用这些函数。
或者Line可能同时拥有这两个功能?
哪个是对的?或..还有其他选择吗?
答案 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
}