一个函数应该是两个类中的一个/两个还是独立的?

MGA*_*MGA 6 c++ java oop

我对OOP比较新.有时我遇到的情况是我不确定方法应该去哪里.我会尝试给出一个最小的例子; 我希望我不要过分夸大它.

假设我有一个Point持有点位置的Line类,以及一个包含直线方程的类.我现在需要一种计算a Point和a 之间(垂直)距离的方法Line.我可以:

  • Point :: distance_to_line(L行)
  • Line :: distance_to_point(Point P)
  • 一个独立的功能:point_line_distance(线L,点P)

在OOP中是否有一种首选方式,还是依赖于语言?在C++中,一个独立的函数是一个选项,但是由于我对Java的有限理解,它不允许独立的函数.在那种情况下你会创建一个类PointLineDistanceCalculator吗?

dka*_*zel 4

Point您的第三个选择是不在同类中的其他地方,这Line是最好的选择。

Points不应该知道Lines,反之亦然。否则,它们就会紧密耦合。

http://en.wikipedia.org/wiki/Loose_coupling

然而,可能还有其他一些类知道这两者。

在java中,我可能会创建一个第三Distance类或者DistanceCalculator可以计算多个对象之间的距离。

Distance.between(Point a, Point b)

Distance.between(Point a, line l)
Run Code Online (Sandbox Code Playgroud)

ETC