首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个对象之间的关系

两个对象之间的关系
EN

Stack Overflow用户
提问于 2015-11-26 22:33:40
回答 2查看 354关注 0票数 0

我正在为学校做一个项目,挑战我对OOP的理解。我有同一个类的多个对象,城市。每个城市都有自己的位置。如果我的理解是正确的,因为每个城市之间的距离依赖于另一个城市,"int距离“不能是类城市中的一个字段。我可以编写一个方法来计算每个城市之间的距离,但是我不知道如何/在哪里保存这些数据。我希望最终对这些数据进行排序,以找出哪些City对象最接近。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-26 22:41:28

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

Map包含Cities并不是必要的,但听起来很符合逻辑,肯定有助于操作它们。如果不希望使用类似于DistancesHelper的“助手类”,则定义静态方法来处理可以与静态缓存交互的Cities

票数 1
EN

Stack Overflow用户

发布于 2015-11-27 01:48:57

在我看来,距离的计算应该是Location的方法,而不是City的方法。你以后可以决定你的地图有其他感兴趣的地方,除了城市,也有一个位置。

因此,我对结构的建议是:

代码语言:javascript
运行
复制
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对象中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33947892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档