powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос от новичка - как правильно в ООП использовать справочники
25 сообщений из 26, страница 1 из 2
Вопрос от новичка - как правильно в ООП использовать справочники
    #39948208
Добрый день, заранее прошу прощения за тупой вопрос:

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

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

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

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

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

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

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


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

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


Ну и что вам мешает так делать? В ООП вам нужно думать о том, где разместить функцию, как будет организована логика, а не о том, как данные хранить, вам для этого достаточно классов-сущностей или POJO.
...
Рейтинг: 0 / 0
Вопрос от новичка - как правильно в ООП использовать справочники
    #39948295
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Прокопенко 8,
По ООП нужно больше рисовать и меньше говорить.
Например схему связей сущностей.
Где она?
...
Рейтинг: 0 / 0
Вопрос от новичка - как правильно в ООП использовать справочники
    #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
Вопрос от новичка - как правильно в ООП использовать справочники
    #39948305
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Прокопенко 8,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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