Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос от новичка - как правильно в ООП использовать справочники / 25 сообщений из 26, страница 1 из 2
16.04.2020, 20:35
    #39948208
Вопрос от новичка - как правильно в ООП использовать справочники
Добрый день, заранее прошу прощения за тупой вопрос:

У меня есть рейсы и список маршрутов, на каждый рейс один из фиксированного списка маршрутов(1н ко многим)
Создаю классы и тех и других.
Как правильно мне привязать маршруты к рейсам?
"По старинке" вне ООП яб бы просто в списке или таблице или классе в переменную номера маршрута заносил код из списка маршрутов, а затем по функции обращаясь к списку маршрутов извлекал наименование и другие характеристики.

А как быть соблюдая принципы ООП?
Передавать значение маршрута в соотв.свойство объекта рейса, не раздуются ли данные?
Делать наследование? Рейс наследуется от маршрута? с чего это у них разные методы, я лучше сделаю наследование какое нибудь сложного рейса от рейса, чем связывать разные сущности.

Может агрегацией? в классе рейса создаю переменную класса маршрут. И что? теперь при создании каждого объекта рейса мне еще будет в нем создаваться объект маршрута? зачем? их маршрутов допустим всего 40шт. они уже созданы в main-е и не меняются ни как от наличия или отсутствия рейсов, зачем все раздувать?

Или нужно при создании объекта рейса в вх.параметры передавать готовый объект маршрута? при этом же только ссылка передается? а создаваемый внутри объект маршрута жив пока использую объект и это не сильно увиличивает объем?

Или передавать извлекая значения методами из одного класса в метод другому? - очень похоже на старый классический, процедурный способ.

Знакомы java-сты говорят - учи spring не лезь в дебри.
В интернете нечего кроме совета: в книге: Head First. Паттерны проектирования. Бейтс Берт, Фримен Эрик - все объяснено не нашел. Пролистал, большие сомнения, чтоб ответить на такой вроде бы простой вопрос: академический способ использования справочников в модели ООП надо прочитать всю книгу..

Помогите пожалуйста новичку!
...
Рейтинг: 0 / 0
17.04.2020, 05:59
    #39948251
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Сергей Прокопенко 8,
У каждого рейса есть уникальный маршрут, который определяется точками на карте в пространстве и времени.
Т.е. каждый рейс хранит эти точки у себя в объекте.
Для создания рейса нужна фабрика, которая заполняет данные, в т.ч. и маршрут рейса, по неким правилам.
Где-то так. :-)
...
Рейтинг: 0 / 0
17.04.2020, 06:06
    #39948252
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Сергей Прокопенко 8
Как правильно мне привязать маршруты к рейсам?


Полностью зависит от того, что вы будете с этим делать, как вы работаете с этим дальше, зачем вам это вообще нужно.

Сергей Прокопенко 8
"По старинке" вне ООП яб бы просто в списке или таблице или классе в переменную номера маршрута заносил код из списка маршрутов, а затем по функции обращаясь к списку маршрутов извлекал наименование и другие характеристики.


Ну и что вам мешает так делать? В ООП вам нужно думать о том, где разместить функцию, как будет организована логика, а не о том, как данные хранить, вам для этого достаточно классов-сущностей или POJO.
...
Рейтинг: 0 / 0
17.04.2020, 10:34
    #39948295
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Сергей Прокопенко 8,
По ООП нужно больше рисовать и меньше говорить.
Например схему связей сущностей.
Где она?
...
Рейтинг: 0 / 0
17.04.2020, 10:35
    #39948296
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Сергей Прокопенко 8, эталонной библиотекой, реализующей объектно-ориентированный подход к работе с реляционными данными, является Hibernate.
В их интерпретации, правильно делать так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@Entity
public class Route {
    @Id
    private String code;
}

@Entity
public class Cargo {
..............
    @ManyToOne
    @JoinColumn(name = "route_code")
    private Route route;
..............
}
}
...
Рейтинг: 0 / 0
17.04.2020, 11:06
    #39948305
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Сергей Прокопенко 8,

цель всего этого?
...
Рейтинг: 0 / 0
17.04.2020, 11:28
    #39948311
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
WGA,
Это если у него ОРМ есть в проекте. А не jdbc.
Мы гадаем, автор молчит.
...
Рейтинг: 0 / 0
17.04.2020, 11:31
    #39948313
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
WGA,
> эталон
Счас придет мембер А и скажет что эталон это спринг.
Потом мембер Б скажет что эталон это хранимка в бд. Она быстрее.
Потом мембер С скажет что справочники из облака надо брать.
...
Рейтинг: 0 / 0
17.04.2020, 11:39
    #39948317
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
WGA
Hibernate.
В их интерпретации, правильно делать так

- в приведенном Вами коде нет специфичных для Hibernate нотаций, Вы сумели воспроизвести эталонный пример из JPA
...
Рейтинг: 0 / 0
17.04.2020, 11:40
    #39948321
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Kachalov
WGA
Hibernate.
В их интерпретации, правильно делать так

- в приведенном Вами коде нет специфичных для Hibernate нотаций, Вы сумели воспроизвести эталонный пример из JPA

+1
...
Рейтинг: 0 / 0
17.04.2020, 11:42
    #39948322
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Kachalov
WGA
Hibernate.
В их интерпретации, правильно делать так

- в приведенном Вами коде нет специфичных для Hibernate нотаций, Вы сумели воспроизвести эталонный пример из JPA
Если я начну ему рассказывать про JPA и Hibernate, и как они соотносятся, то, боюсь, он бросит программирование. По-крайней мере бэкендовое ))

ЗЫ. Раз пошла такая гулянка, то аннотации JPA (все без исключения, afaik) являются подмножеством Hibernate.
...
Рейтинг: 0 / 0
17.04.2020, 12:01
    #39948327
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
WGA,
Он спросил про "наследоваться или агрегироваться".
Тут вообще код не должен быть.
...
Рейтинг: 0 / 0
17.04.2020, 12:36
    #39948334
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
WGA
аннотации JPA (все без исключения, afaik) являются подмножеством Hibernate

- или EclipseLink? JPA - это спецификация, которую реализуют различные ORM

WGA
Если я начну ему рассказывать про JPA и Hibernate ...

- так начните с простого, с хорошо документированной спецификации, на которую Вы по факту и ссылаетесь
...
Рейтинг: 0 / 0
17.04.2020, 12:45
    #39948339
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Сергей Прокопенко 8
в классе рейса создаю переменную класса маршрут

- да (альтернативно - переменную с идентификатором маршрута и подтягивать маршрут по идентификатору при необходимости)

Сергей Прокопенко 8
теперь при создании каждого объекта рейса мне еще будет в нем создаваться объект маршрута? зачем? их маршрутов допустим всего 40шт. они уже созданы в main-е и не меняются ни как от наличия или отсутствия рейсов, зачем все раздувать?

- либо передавать ссылку на "объект маршрут" (при этом создавать его каждый раз не нужно), либо лениво его инициализировать (подтягивать объект при обращении)

Сергей Прокопенко 8
Помогите пожалуйста новичку!

- Вы не уточнили как именно Вы обращаетесь к данным в БД и это затрудняет коллегам возможность дать релевантный совет. Если Вы работаете с БД через JDBC одни решения будут проще, если через ORM - другие. В общем желательно описать платформу и технологии задействованные в проекте. Ну и конечно, есть много нюансов связанных с самим проектом (количества данных, частотой обращения к данным и т п).
...
Рейтинг: 0 / 0
17.04.2020, 13:34
    #39948350
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
WGA

ЗЫ. Раз пошла такая гулянка, то аннотации JPA (все без исключения, afaik) являются подмножеством Hibernate.

Может наоборот?
...
Рейтинг: 0 / 0
17.04.2020, 15:30
    #39948379
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
mayton
WGA

ЗЫ. Раз пошла такая гулянка, то аннотации JPA (все без исключения, afaik) являются подмножеством Hibernate.

Может наоборот?


Нет. Т.к. множество аннотаций Hibernate включают в себя множество аннотаций JPA.
А вот наоборот - нет. :-)
...
Рейтинг: 0 / 0
17.04.2020, 16:08
    #39948401
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
mad_nazgul
Нет. Т.к. множество аннотаций Hibernate включают в себя множество аннотаций JPA.
А вот наоборот - нет. :-)

- давно пакет javax.persistence.* относится к Hibernate/RedHat?
...
Рейтинг: 0 / 0
17.04.2020, 16:21
    #39948412
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
mad_nazgul
mayton
пропущено...

Может наоборот?


Нет. Т.к. множество аннотаций Hibernate включают в себя множество аннотаций JPA.
А вот наоборот - нет. :-)

Ахаха.
...
Рейтинг: 0 / 0
17.04.2020, 18:31
    #39948459
Вопрос от новичка - как правильно в ООП использовать справочники
Kachalov,

Спасибо, вот наверно так и поступлю: буду передавать ссылку на объект маршрута.
...
Рейтинг: 0 / 0
17.04.2020, 18:45
    #39948464
Вопрос от новичка - как правильно в ООП использовать справочники
Спасибо за комментарии
Прочитал еще здесь: https://qna.habr.com/q/368548

Есть работающий php-проект который хотелось не спешно перевести на java.
К БД подключение будет тогда jdbc -так наверно проще и "прозрачнее".

В объекте "рейс" буду хранить ссылки на объекты маршрутов, машин, водителей и т.д.

А обрабатывать логику буду еще 1м верхним классом, тогда примерно будут соответствовать классы - таблицам.

А с ORM(т.е. Hibernate) разберусь потом.. если рядом будут коллеги и желающие в это вникать.
...
Рейтинг: 0 / 0
17.04.2020, 20:11
    #39948477
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Сергей Прокопенко 8,
Если jdbc то ссылкой вполне может быть FK субд.
Так вообще "прозрачно". Как в PHP))
...
Рейтинг: 0 / 0
20.04.2020, 14:30
    #39948955
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Kachalov
mad_nazgul
Нет. Т.к. множество аннотаций Hibernate включают в себя множество аннотаций JPA.
А вот наоборот - нет. :-)

- давно пакет javax.persistence.* относится к Hibernate/RedHat?


И-и-и...
Мы же говорим об имплементации, а не декларации. :-)
...
Рейтинг: 0 / 0
20.04.2020, 14:47
    #39948963
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Частично попытался ответить на те вопросы, которые смог вычленить из текста.

Сергей Прокопенко 8

Как правильно мне привязать маршруты к рейсам?
"По старинке" вне ООП яб бы просто в списке или таблице или классе в переменную номера маршрута заносил код из списка маршрутов, а затем по функции обращаясь к списку маршрутов извлекал наименование и другие характеристики.

В ООП все так же

Сергей Прокопенко 8

Передавать значение маршрута в соотв.свойство объекта рейса, не раздуются ли данные?

Нет, не раздуется.

Сергей Прокопенко 8

Делать наследование? Рейс наследуется от маршрута? с чего это...

So do I
причин наследовать так же не вижу.

Сергей Прокопенко 8

Или нужно при создании объекта рейса в вх.параметры передавать готовый объект маршрута? при этом же только ссылка передается?

Упрощенно - да.

Сергей Прокопенко 8

а создаваемый внутри объект маршрута жив пока использую объект и это не сильно увиличивает объем?

Если Вы будете СОЗДАВАТЬ оператором new - то потребление памяти будет увеличиваться

Если Вы НЕ будете создавать (зачем "создаваемый внутри" мне не понятно) - то НЕ сильно

AFAIK
...
Рейтинг: 0 / 0
20.04.2020, 15:49
    #39948989
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
mad_nazgul

Т.к. множество аннотаций Hibernate включают в себя множество аннотаций JPA.
А вот наоборот - нет. :-)
...
И-и-и...
Мы же говорим об имплементации, а не декларации. :-)

- Вы уж определитесь о чем говорите, а то я по наивности все буквально воспринимаю, написано про "аннотации", так я о них и толкую. А что там за имплементации у аннотации - просветите?
...
Рейтинг: 0 / 0
21.04.2020, 05:35
    #39949176
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос от новичка - как правильно в ООП использовать справочники
Kachalov
mad_nazgul

Т.к. множество аннотаций Hibernate включают в себя множество аннотаций JPA.
А вот наоборот - нет. :-)
...
И-и-и...
Мы же говорим об имплементации, а не декларации. :-)

- Вы уж определитесь о чем говорите, а то я по наивности все буквально воспринимаю, написано про "аннотации", так я о них и толкую. А что там за имплементации у аннотации - просветите?


Э-э-э т.е. если прописать аннотации, без подключения имплиметанации, хотя бы OpenJPA, то они будут работать?!
Вроде бы нет.
Хибер поддеривает все аннотации JPA плюс еще есть свои аннотации.
Т.о. множество аннотаций хибера больше области аннотаций JPA.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос от новичка - как правильно в ООП использовать справочники / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]