powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / работа с реляционными данными в объектно-ориентированых программмах
25 сообщений из 48, страница 1 из 2
работа с реляционными данными в объектно-ориентированых программмах
    #32487956
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди,у меня такой серьезный вопрос. Хочу занаться разработкой серьезного програмного продукта который будет представлять собой клиентское приложение для работы с базой данных размещенной на сервере Sybase ASE. Предметная область пока конкретно не определена, но ясно что будут вестись разного рода учеты (например, ведения склада товаров, продажа товаров с магазина и т.д.).
Разработка, вернее кодирование, будет вестись на знакомом мне объектно-ориентированом языке С++.
Проблема у меня следующая: мы с ребятами никак не можем, определится на счет организации структуры программы. Ясно что будет вестись работа с реляционными данными, но как увязать реляционные данные с описаными в виде класов сущьновтями (например, товар, покупатель, продажа) пока не знаем. Хотелось бы ето сделать как можно правильней, так как у такой програмы должен быть долгий период существования, ее придется постоянно сопровождать, расширять и дописывать. У нас была практика в написании чегото "подобного" но после того когда в коде появилось больше сотни класов мы стали сильно путаться в своем же коде. И как понимаете сопровождение такого продукта не представляется возможным в будущем, а что уж говорить о расширении програмы. Скорее всего это результат плохих знаний в области проектирования програмных продуктов и отсутствие опыта в создании програм такого типа.
Если кто знает полезные ссылки, или литературу по даной проблеме, очень прошу - помогите. Особенно интересут именно работа с реляционными данными в объектно-ориентированых программмах.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32487990
Mike Neck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не пишите так. У вас в коде должны быть сущности: документ, журнал, справочник, поиск, отчёт. И всё будет чики пики. Перемапливание реляционной структуры в объектную и обратно - верный способ заработать фимоз голового мозга и трудности с сопровождением. Юзеру такой маппинг до лампочки. Программа в своём UI должна представлять сущности предметной области - во внутренней структуре вовсе не обязательно.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32488135
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мы пытались разделить сущьности отвечающие данным ( которыми манипулирует приложение) и сущьности отвечающие за интерфейс с пользователем:
- Скажем так, у нас был базовый клас "Документ" от которого был унаследован клас "Накладная", класс накладная был связан со списком товаров, в свою очеред напрашиваеться описание сущьности "Товар" и "Список товара". В свою очередь нап понадобился и "Список Документов".
- Потом имело место описание иерархии классов описяния графического интерфейса. Сюда уже входили формочки отображения таких данных как "Накладная" , "Список товара".

Но проблема возникала именно при работе с такими данными как "Документ" а именно "Накладная". Тут возникают вопросы :
1) как объект такого класса должен записывать себя в базу?
2) или его всетаки должен записывать в базу "список Накладных"?
3) как при рождении нового объекта этого класа заполнять его данными из БД и кто это должен делать?
4) как формировать SQL запросы, по иерархии , или в конечном класе?
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32488157
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пунктами 1, 2, 3 и 4 должен заниматься persistence layer вашего приложения (не знаю как по русски, уровень сохранения?). Он же по идее должен заниматься и отображением объектов в реляционную структуру и обратно.
Т.е сохранение (материализация/дематериализация из/в БД) бизнес объектов - это отдельная задача, требующая отдельного набора классов. Не следует смешивать код с бизнес-логикой и чисто технический код.
Все ИМХО.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32488184
Mike Neck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть класс справочник. Он реализует закачку данных через селек, подкачку одной записи, обновление записи, сортировку и ещё кое что. С ним в тесной связи работает класс(форма) - редактор записей. Базовая форма реализует всю подноготную кроме запросов редактирования и вставки. От него наследуется форма в кторой есть только дизайн и сборка SQL.

На более высоком уровне есть Список документов(журнал). Он унаследован от справочника но обеспечивает иконки(статусы), регистрацию форм поиска, регистрацию классов реализующих специальные команды и пр. Он может работать как с редактором записей так и с его наследником - документом. Документ реализует позиции документа, сборку SQL в батч и тд. Ну и дизайн.

Есть два вьювера Вьювер справочников с режимами показа и тд. И вьювер журналов - они обеспечивают UI

Все работает через интерфейсы. Журналы и справочники ничего не знают о классах редактора/документа а работают через интерфейс. Точно также вьюверы ничего не знают о журналах.

Все модули справочников и журналов регистрируют функцию создания себя в специальной фабрике которая обеспечивает кеширование.

Приложение мое впринципе ничего кроме как сборкой SQL и показом результатов не занимается.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32488523
Nauro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор="Mike Neck"
У меня есть класс справочник. Он реализует закачку данных через селек, подкачку одной записи, обновление записи, сортировку и ещё кое что.

В простонародье (или как учил великий Гради Буч) - это класс сущности.
автор="Mike Neck"
С ним в тесной связи работает класс(форма) - редактор записей.

а это ничто иное как клас общения с пользователем, или граничный класс.
автор="Mike Neck"
На более высоком уровне есть Список документов(журнал). Он унаследован от справочника но обеспечивает иконки(статусы), регистрацию форм поиска, регистрацию классов реализующих специальные команды и пр.

так тут ты унаследовал от класса сущности но сделал его граничным (визуальным).
Так че то я непонимаю, где тут разграничение у тебя? Где основной "граница-управление-сущность"?
--------------- это все критика, теперь по сути.

Проблема не в отображении сущности. Это вопрос как говорицца "дизайнерский". Проблема в следующем:
Клас сущности должен себя сохранять в базе и восстанавливать себя. Но и это как говорицца не проблема. В конструкторе селект написали + добавили методы апдейта, инсерта, и удаления. Но классы сущности могут унаследоватся от других классов, более того члены этого класса могут быть такими же классами сущностями (простая реляция). Можна тупо написать громосдкие sql запросы, и переопределять эти запросы в наследуемых классах, что очень и очень неудобно. Хотелось бы чтоб это было на автомате. Клас определен и он работает, внезависимости, унаследован ли он, и имеет ли он в своем составе другие классы сущности.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32488880
Mike Neck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет. Журнал тоже ничего не показывает. Показывает вьювер журналов.
Который с журналами работает через интерфейс.


А чтобы и наследование и SQL - не получится. Я через только процедуры работаю. И никаких select просто так не делаю.

А если и получится то громоздкость и неочевидность будет конкретная. UI можно наследовать а SQL по большей части нет.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32488905
Nauro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНа более высоком уровне есть Список документов(журнал). Он унаследован от справочника но обеспечивает иконки(статусы) ,
ну а эти "иконки (статусы)"? это как понимать?
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32488952
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32489042
Nauro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Snake
Я конешно понимаю что легче дать ссылку, да еще и на "родном" англиЦком языке. Но хотелось бы хоть какого то обяснения что и как на пальцах, если человек не решал этой проблемы, более того он даже не стыкался с ней, то не вижу смысла советовать, и показывать просто ссылки.

---------------------
уйдем немного в дотНет.

Тут умные люди ввели уже понятие сериализации обектов. Т.е. их сохранения в некой форме на физическом носителе. Отсюда напрашивается хотение переопределить эти методы под свою дудку, чтоб сохранялись обекты в БД. Как то так. Но как именно, я и хотел узнать тут. Может есть какие то мысли, решения по поводу?
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32489087
BlackTigerAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наивные...

Я как-то давно читал статейку, в которой описывался такой подход. Состояла они из нескольких статей. Пока дело касалось только теории - все щло гладко и красиво, но когда дело дошло до реализации... статья прервалась. Я смеялся ОЧЕНЬ долго.

Не заморачивайтесь со всякими "сучностями". Все хорошо только в теории, а вы еще и на C++ пытаетесь это сделать.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32489175
Nauro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наивные не наивные, а невозможного нету. И я неверю, что такого рода задачи не решалитсь на спп!
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32489262
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И я неверю, что такого рода задачи не решалитсь на спп!
1. так вот если почитать, все же, то станет понятно, что такие задачи решались и автор конкретно показывает "грабли" таким вот как мы с вами. ищущим и страждущим ...

2. по поводу: "родном" англиЦком языке
нэу камментс.

3. если человек не решал этой проблемы, более того он даже не стыкался с ней, то не вижу смысла советовать, и показывать просто ссылки.
извините, больше не буду.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32489266
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что такого рода задачи не решалитсь на спп

Решались, и решаются, и будут решаться...

До тех пор пока прикладное программирование будет приносить денег больше чем системное - всегда найдутся команды "плюсовиков" (или отдельные личности), которые будут пытаться откусить кусочек пирога от корпоративных потребностей в автоматизации...

Но всегда тяжело им будет в конкурентной борьбе с дельфинами, васиковцами и с недавних пор дотнетчиками...
Потому как при прочих равных - любой прикладной проект реализованный на плюсах сжирает как минимум в 2 раза больше ресурсов, чем аналогичный - на любой другой RAD-платформе.

З.Ы. хотя бы и потому тоже, что приходится тратить время и силы разработчиков на ту же структуру иерархии базовых классов, и те из счастливчиков, которые уже сделали подобную "предварительную работу", навряд ли станут делиться своими наработками вот так вот запросто - в публичном форуме, забесплатно... (они скорее всего молча еще 1 проект на этой структуре реализуют и денежек себе немного заработают).
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32489814
Nauro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 snake
искренне извиняюс за столь небрежное высказывание.

автор и те из счастливчиков, которые уже сделали подобную "предварительную работу", навряд ли станут делиться своими наработками вот так вот запросто - в публичном форуме, забесплатно... (они скорее всего молча еще 1 проект на этой структуре реализуют и денежек себе немного заработают).
ну что ж . у матросов нет вопросов. Все паняна! ;). Еще раз прошу прощенья если кого обидел.

п.с.
...всем когда то надо начинать, так почему же и мне не начать? Ушел мыслить.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32490121
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор = Артем1Т.е сохранение (материализация/дематериализация из/в БД) бизнес объектов - это отдельная задача, требующая отдельного набора классов. Не следует смешивать код с бизнес-логикой и чисто технический код.
Все ИМХО.
Скажите пожалуйста, как разобраться которые классы подобного приложения должны относится к бизнес-логике, а которые к чисто техническому коду, а которые к интерфейсу с пользователем? Чото я уже совсем запуталься? Но идея мне нравиться!
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32490234
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я на пальцах не силен объяснять, к сожалению. Видимо, к бизнес-объектам можно отности в данном случае классы "Справочник" и "Элемент справочника" (запись в смысле). К классам UI можно отнести форму отображения справочника. Чисто технического тут нет. К примеру класс TDictionaryDAL (DAL - Data Access Logic) с методами Get_набор_записей_справочника (м.б. несколько), Load_элемент_справочника, Save... ну и т.д. Вообще об этом можно по русски почитать у Лармана, у него в конце книги есть пример проектрования контрура работы с БД. Ну и по ссылкам от snake. Тема весьма объемная и непростая, так просто не расскажешь. Навалом как плюсов такого подхода, так и минусов.

блин, пример классов посмотрел не в вашем посте, а у Mike Neck .
Ну да ладно, смысл, я надеюсь, ясен.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32490734
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор = Артем1 Вообще об этом можно по русски почитать у Лармана
Артем1 а в инете нигде нету этой книги в электронном виде (спрашиваю, потому что даже не знаю где ее сейчас достать)? Ну или чего то подобного.
В английском я конечно не силен.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32490902
jazzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
думаю после прочтения этого многое станет понятнее...

Приемы объектно-ориентированного проектирования.
Паттерны проектирования
http://www.books.ru/shop/books/8451

Архитектура корпоративных программных приложений
http://www.books.ru/shop/books/156126
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32490989
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ignaci
Насчет электронной версии не в курсе. Наверняка есть, но я не умею
искать такую инфу в нете. :( Тока если попадется чья-нибудь ссылка.
А поисковики посылают только в магазины. :(

2 jazzy
Первая книга конечно классика, но в ней не найти хорошей теории именно
по обсуждаемому вопросу.
Вторую не читал, но вообще у Фаулера книги не плохие. Если вы читали, то
не могли бы кратенько охарактеризовать ее? Типа мнение о книге,
актуальность и т.п. А то эти аннотации на books.ru только курам на смех.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32491951
jazzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
первую книгу я упомянул потому как в топике был задал вопрос "как разобраться которые классы подобного приложения должны относится к бизнес-логике, а которые к чисто техническому коду, а которые к интерфейсу с пользователем". если такой вопрос ставится — очевидно человек не знаком с классикой... =)

вторая книга больше относится к данному вопросу — там несколько глав как раз посвящены паттернам взамодейсвия с базами. готовых решений вы в ней тоже, естественно, не найдете, но зато получите представление "как жить дальше". примеры реализации паттернов приводятся на джаве и C#, но реализовать их на C++, думаю, не проблема...

общее мнение — эту книгу вместе с первой должны прочитать все, кто пишет приложения сложнее домашних страничек...
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32491999
jazzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 ignaci

Ларман. Применение UML и шаблонов проектирования. 2-е издание.
http://www.books.ru/shop/books/25832
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32492088
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 jazzy
Спасибо за комментарий. Прикуплю этот труд себе в библиотеку.
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32492800
Полуэкт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вау! появилось новое поколение килобитовцев 1024 !!! я все же больше готов отнестись с уважением к бедному килобиту который один пуп рвал над непосильной задачей и (я искренне надеюсь) таки понял что к чему...

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

гыгы.. творите. не забудьте прислать открытку с первой прибыли ;)
...
Рейтинг: 0 / 0
работа с реляционными данными в объектно-ориентированых программмах
    #32493838
ignaci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наткнулся я на интересную статейку по этой теме (на русском), вроде дает ответы на большенство моих вопросов .

Если кому интересно можете посмотреть
...
Рейтинг: 0 / 0
25 сообщений из 48, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / работа с реляционными данными в объектно-ориентированых программмах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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