Я работаю над проектом для школы, который бросает вызов моему пониманию ООП. У меня есть несколько объектов одного класса, Город. В каждом городе есть место. Если мое понимание правильное, поскольку расстояние между каждым городом зависит от другого города «int distance», не может быть полем в классе City. Я могу написать метод расчета расстояния между каждым городом, но я не уверен, как и где сохранить эти данные. Я бы хотел сортировать эти данные, чтобы найти, какие объекты города находятся в непосредственной близости.Связь между двумя объектами
ответ
Я бы предложил класс Map
(как в картографии, не обычный Collection
), чьи экземпляры будут содержать Set
Cities
. Они могли бы предоставить метод для вычисления дополнительной информации об отношениях между их Cities
и кэшировать результат, если это необходимо.
Не обязательно, чтобы Map
содержит Cities
, но это звучит логично и, несомненно, поможет им манипулировать. Если вы не хотите, чтобы вы могли использовать «вспомогательный класс», то вроде 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
объекта.
- 1. связь между двумя объектами
- 2. Связь между двумя объектами
- 3. Связь между двумя объектами
- 4. MongoDB basic (Связь между двумя объектами)
- 5. Найти связь между двумя объектами в Freebase
- 6. Извлечь связь между двумя объектами, используя StanfordCoreNLP
- 7. Как реализовать определенную связь между двумя объектами?
- 8. Связь CBO между объектами
- 9. Связь между объектами - EntityFramework
- 10. Противоречивые связь между объектами
- 11. Связь между объектами C++
- 12. Связь между объектами - C4Framework
- 13. Связь между объектами NSManagedObjects
- 14. Нарушение ссылки между двумя объектами
- 15. symfony2 отношение между двумя объектами
- 16. Столкновение между двумя объектами
- 17. Subquery между двумя объектами
- 18. Создайте связь между двумя объектами в разных ViewControllers
- 19. Создать связь между двумя объектами в Core Data
- 20. Как нарисовать связь между двумя объектами в данных ядра?
- 21. Entity Framework (связь между двумя объектами не может быть определено)
- 22. Связь между двумя объектами не может быть определена
- 23. Динамика CRM: более чем одна каскадная связь между двумя объектами?
- 24. Невозможно установить связь между двумя объектами в Rspec
- 25. Я определяю связь между двумя объектами на зависимом или главном?
- 26. Есть ли быстрый способ получить любую связь между двумя объектами?
- 27. Как создать связь между двумя объектами в Rails has_many_and_belongs_to_many отношения
- 28. Необязательная связь OneToOne между объектами?
- 29. Связь между объектами в Python
- 30. Область и связь между объектами
Добро пожаловать в переполнение стека :-) Я боюсь, что этот вопрос не по теме, потому что речь идет не о конкретной проблеме, с которой вы столкнулись при попытке написать решение. Не стесняйтесь задавать другой, более конкретный вопрос, когда вы сталкиваетесь с проблемой (например, когда расчет расстояний не работает) – Breeze
вы можете использовать метод в одном городе, который принимает второй город в качестве параметра. int distanceBetween (City otherCity) - но вы не сохранили бы это нигде. вы просто вернете это из метода. если вам нужно было сохранить эти расстояния, вы могли бы создать новый класс, который представлял бы это. Может быть, класс расстояний, который содержит ссылки на два города, и рассчитанное расстояние – slipperyseal
Тем не менее, я не люблю отправлять людей, не помогая. Я рекомендую хранить позицию каждого города в классе города, а в другом, превосходном классе хранить города и двухмерный массив, который содержит расстояния. – Breeze