[英]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.