簡體   English   中英

兩個物體之間的關系

[英]Relationship between two objects

我正在為一個學校項目工作,這對我對OOP的理解提出了挑戰。 我有同一個班級的多個對象,城市。 每個城市都有一個位置。 如果我的理解是正確的,則由於每個城市之間的距離取決於另一個城市,因此“ int distance”不能是“城市”類中的一個字段。 我可以編寫一種方法來計算每個城市之間的距離,但不確定如何/在何處保存該數據。 我想最終對這些數據進行排序,以找到最接近的City對象。

我建議使用Map類(例如在制圖學中,而不是通常的Collection ),其實例將包含Set of Cities 他們可以提供方法來計算有關其Cities之間關系的其他信息,並在需要時緩存結果。

Map不必包含Cities但聽起來很合邏輯,並且一定會幫助您進行操作。 如果您不希望使用“ helper類”,例如DistancesHelper ,則定義靜態方法以在可以與靜態緩存進行交互的Cities上工作。

在我看來,距離的計算應該是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對象中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM