两个对象之间的关系

时间:2015-11-26 22:33:41

标签: java class object

我正在为学校做一个项目,这个项目正在挑战我对OOP的理解。我有同一个班级的多个对象,City。每个城市都有一个位置。如果我的理解是正确的,因为每个城市之间的距离取决于另一个城市" int distance"不能成为班级城市中的一个领域。我可以编写一种方法来计算每个城市之间的距离,但我不确定如何/在哪里保存这些数据。我想最终对这些数据进行排序,以找出最接近的城市对象。

2 个答案:

答案 0 :(得分:1)

我建议使用Map类(如制图中,而不是通常的Collection),其实例将包含Set Cities。他们可以提供计算其Cities之间关系的其他信息的方法,并在需要时缓存结果。

Map不一定包含Cities,但听起来合乎逻辑,肯定有助于操纵它们。如果您不想要,可以使用"帮助类",类似DistancesHelper,定义静态方法以处理可能与静态缓存交互的Cities

答案 1 :(得分:0)

在我看来,距离的计算应该是Location的方法而不是City的方法。您可以稍后决定您的地图除了具有位置的城市之外还有其他兴趣点。

所以我对结构的建议是:

interface PointOfInterest {
    Location getLocation();
    default int distanceTo(PointOfInterest other) {
        return getLocation().distanceTo(other.getLocation());
    }
}

class City implements PointOfInterest {
    private final Location location;
    @Override public Location getLocation() {
        return location;
    }
}

class Location {
    public int distanceTo(Location other) {
        ...
    }
}

这样,定义位置所需的任何数据(例如纬度,经度)都完全包含在Location对象中。