|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
Люди,у меня такой серьезный вопрос. Хочу занаться разработкой серьезного програмного продукта который будет представлять собой клиентское приложение для работы с базой данных размещенной на сервере Sybase ASE. Предметная область пока конкретно не определена, но ясно что будут вестись разного рода учеты (например, ведения склада товаров, продажа товаров с магазина и т.д.). Разработка, вернее кодирование, будет вестись на знакомом мне объектно-ориентированом языке С++. Проблема у меня следующая: мы с ребятами никак не можем, определится на счет организации структуры программы. Ясно что будет вестись работа с реляционными данными, но как увязать реляционные данные с описаными в виде класов сущьновтями (например, товар, покупатель, продажа) пока не знаем. Хотелось бы ето сделать как можно правильней, так как у такой програмы должен быть долгий период существования, ее придется постоянно сопровождать, расширять и дописывать. У нас была практика в написании чегото "подобного" но после того когда в коде появилось больше сотни класов мы стали сильно путаться в своем же коде. И как понимаете сопровождение такого продукта не представляется возможным в будущем, а что уж говорить о расширении програмы. Скорее всего это результат плохих знаний в области проектирования програмных продуктов и отсутствие опыта в создании програм такого типа. Если кто знает полезные ссылки, или литературу по даной проблеме, очень прошу - помогите. Особенно интересут именно работа с реляционными данными в объектно-ориентированых программмах. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 15:09 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
Не пишите так. У вас в коде должны быть сущности: документ, журнал, справочник, поиск, отчёт. И всё будет чики пики. Перемапливание реляционной структуры в объектную и обратно - верный способ заработать фимоз голового мозга и трудности с сопровождением. Юзеру такой маппинг до лампочки. Программа в своём UI должна представлять сущности предметной области - во внутренней структуре вовсе не обязательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 15:20 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
Мы пытались разделить сущьности отвечающие данным ( которыми манипулирует приложение) и сущьности отвечающие за интерфейс с пользователем: - Скажем так, у нас был базовый клас "Документ" от которого был унаследован клас "Накладная", класс накладная был связан со списком товаров, в свою очеред напрашиваеться описание сущьности "Товар" и "Список товара". В свою очередь нап понадобился и "Список Документов". - Потом имело место описание иерархии классов описяния графического интерфейса. Сюда уже входили формочки отображения таких данных как "Накладная" , "Список товара". Но проблема возникала именно при работе с такими данными как "Документ" а именно "Накладная". Тут возникают вопросы : 1) как объект такого класса должен записывать себя в базу? 2) или его всетаки должен записывать в базу "список Накладных"? 3) как при рождении нового объекта этого класа заполнять его данными из БД и кто это должен делать? 4) как формировать SQL запросы, по иерархии , или в конечном класе? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 16:08 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
Пунктами 1, 2, 3 и 4 должен заниматься persistence layer вашего приложения (не знаю как по русски, уровень сохранения?). Он же по идее должен заниматься и отображением объектов в реляционную структуру и обратно. Т.е сохранение (материализация/дематериализация из/в БД) бизнес объектов - это отдельная задача, требующая отдельного набора классов. Не следует смешивать код с бизнес-логикой и чисто технический код. Все ИМХО. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 16:17 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
У меня есть класс справочник. Он реализует закачку данных через селек, подкачку одной записи, обновление записи, сортировку и ещё кое что. С ним в тесной связи работает класс(форма) - редактор записей. Базовая форма реализует всю подноготную кроме запросов редактирования и вставки. От него наследуется форма в кторой есть только дизайн и сборка SQL. На более высоком уровне есть Список документов(журнал). Он унаследован от справочника но обеспечивает иконки(статусы), регистрацию форм поиска, регистрацию классов реализующих специальные команды и пр. Он может работать как с редактором записей так и с его наследником - документом. Документ реализует позиции документа, сборку SQL в батч и тд. Ну и дизайн. Есть два вьювера Вьювер справочников с режимами показа и тд. И вьювер журналов - они обеспечивают UI Все работает через интерфейсы. Журналы и справочники ничего не знают о классах редактора/документа а работают через интерфейс. Точно также вьюверы ничего не знают о журналах. Все модули справочников и журналов регистрируют функцию создания себя в специальной фабрике которая обеспечивает кеширование. Приложение мое впринципе ничего кроме как сборкой SQL и показом результатов не занимается. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 16:28 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
автор="Mike Neck" У меня есть класс справочник. Он реализует закачку данных через селек, подкачку одной записи, обновление записи, сортировку и ещё кое что. В простонародье (или как учил великий Гради Буч) - это класс сущности. автор="Mike Neck" С ним в тесной связи работает класс(форма) - редактор записей. а это ничто иное как клас общения с пользователем, или граничный класс. автор="Mike Neck" На более высоком уровне есть Список документов(журнал). Он унаследован от справочника но обеспечивает иконки(статусы), регистрацию форм поиска, регистрацию классов реализующих специальные команды и пр. так тут ты унаследовал от класса сущности но сделал его граничным (визуальным). Так че то я непонимаю, где тут разграничение у тебя? Где основной "граница-управление-сущность"? --------------- это все критика, теперь по сути. Проблема не в отображении сущности. Это вопрос как говорицца "дизайнерский". Проблема в следующем: Клас сущности должен себя сохранять в базе и восстанавливать себя. Но и это как говорицца не проблема. В конструкторе селект написали + добавили методы апдейта, инсерта, и удаления. Но классы сущности могут унаследоватся от других классов, более того члены этого класса могут быть такими же классами сущностями (простая реляция). Можна тупо написать громосдкие sql запросы, и переопределять эти запросы в наследуемых классах, что очень и очень неудобно. Хотелось бы чтоб это было на автомате. Клас определен и он работает, внезависимости, унаследован ли он, и имеет ли он в своем составе другие классы сущности. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 18:16 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
Нет. Журнал тоже ничего не показывает. Показывает вьювер журналов. Который с журналами работает через интерфейс. А чтобы и наследование и SQL - не получится. Я через только процедуры работаю. И никаких select просто так не делаю. А если и получится то громоздкость и неочевидность будет конкретная. UI можно наследовать а SQL по большей части нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 09:09 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
авторНа более высоком уровне есть Список документов(журнал). Он унаследован от справочника но обеспечивает иконки(статусы) , ну а эти "иконки (статусы)"? это как понимать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 09:26 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
Mapping Objects To Relational Databases The Design of a Robust Persistence Layer For Relational Databases http://www.ambysoft.com/mappingObjects.html ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 09:55 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
2 Snake Я конешно понимаю что легче дать ссылку, да еще и на "родном" англиЦком языке. Но хотелось бы хоть какого то обяснения что и как на пальцах, если человек не решал этой проблемы, более того он даже не стыкался с ней, то не вижу смысла советовать, и показывать просто ссылки. --------------------- уйдем немного в дотНет. Тут умные люди ввели уже понятие сериализации обектов. Т.е. их сохранения в некой форме на физическом носителе. Отсюда напрашивается хотение переопределить эти методы под свою дудку, чтоб сохранялись обекты в БД. Как то так. Но как именно, я и хотел узнать тут. Может есть какие то мысли, решения по поводу? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 10:29 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
Наивные... Я как-то давно читал статейку, в которой описывался такой подход. Состояла они из нескольких статей. Пока дело касалось только теории - все щло гладко и красиво, но когда дело дошло до реализации... статья прервалась. Я смеялся ОЧЕНЬ долго. Не заморачивайтесь со всякими "сучностями". Все хорошо только в теории, а вы еще и на C++ пытаетесь это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 10:44 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
наивные не наивные, а невозможного нету. И я неверю, что такого рода задачи не решалитсь на спп! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 11:13 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
И я неверю, что такого рода задачи не решалитсь на спп! 1. так вот если почитать, все же, то станет понятно, что такие задачи решались и автор конкретно показывает "грабли" таким вот как мы с вами. ищущим и страждущим ... 2. по поводу: "родном" англиЦком языке нэу камментс. 3. если человек не решал этой проблемы, более того он даже не стыкался с ней, то не вижу смысла советовать, и показывать просто ссылки. извините, больше не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 11:41 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
что такого рода задачи не решалитсь на спп Решались, и решаются, и будут решаться... До тех пор пока прикладное программирование будет приносить денег больше чем системное - всегда найдутся команды "плюсовиков" (или отдельные личности), которые будут пытаться откусить кусочек пирога от корпоративных потребностей в автоматизации... Но всегда тяжело им будет в конкурентной борьбе с дельфинами, васиковцами и с недавних пор дотнетчиками... Потому как при прочих равных - любой прикладной проект реализованный на плюсах сжирает как минимум в 2 раза больше ресурсов, чем аналогичный - на любой другой RAD-платформе. З.Ы. хотя бы и потому тоже, что приходится тратить время и силы разработчиков на ту же структуру иерархии базовых классов, и те из счастливчиков, которые уже сделали подобную "предварительную работу", навряд ли станут делиться своими наработками вот так вот запросто - в публичном форуме, забесплатно... (они скорее всего молча еще 1 проект на этой структуре реализуют и денежек себе немного заработают). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 11:43 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
2 snake искренне извиняюс за столь небрежное высказывание. автор и те из счастливчиков, которые уже сделали подобную "предварительную работу", навряд ли станут делиться своими наработками вот так вот запросто - в публичном форуме, забесплатно... (они скорее всего молча еще 1 проект на этой структуре реализуют и денежек себе немного заработают). ну что ж . у матросов нет вопросов. Все паняна! ;). Еще раз прошу прощенья если кого обидел. п.с. ...всем когда то надо начинать, так почему же и мне не начать? Ушел мыслить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 14:36 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
автор = Артем1Т.е сохранение (материализация/дематериализация из/в БД) бизнес объектов - это отдельная задача, требующая отдельного набора классов. Не следует смешивать код с бизнес-логикой и чисто технический код. Все ИМХО. Скажите пожалуйста, как разобраться которые классы подобного приложения должны относится к бизнес-логике, а которые к чисто техническому коду, а которые к интерфейсу с пользователем? Чото я уже совсем запуталься? Но идея мне нравиться! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 16:05 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
Я на пальцах не силен объяснять, к сожалению. Видимо, к бизнес-объектам можно отности в данном случае классы "Справочник" и "Элемент справочника" (запись в смысле). К классам UI можно отнести форму отображения справочника. Чисто технического тут нет. К примеру класс TDictionaryDAL (DAL - Data Access Logic) с методами Get_набор_записей_справочника (м.б. несколько), Load_элемент_справочника, Save... ну и т.д. Вообще об этом можно по русски почитать у Лармана, у него в конце книги есть пример проектрования контрура работы с БД. Ну и по ссылкам от snake. Тема весьма объемная и непростая, так просто не расскажешь. Навалом как плюсов такого подхода, так и минусов. блин, пример классов посмотрел не в вашем посте, а у Mike Neck . Ну да ладно, смысл, я надеюсь, ясен. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 16:36 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
автор = Артем1 Вообще об этом можно по русски почитать у Лармана Артем1 а в инете нигде нету этой книги в электронном виде (спрашиваю, потому что даже не знаю где ее сейчас достать)? Ну или чего то подобного. В английском я конечно не силен. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2004, 19:43 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
думаю после прочтения этого многое станет понятнее... Приемы объектно-ориентированного проектирования. Паттерны проектирования http://www.books.ru/shop/books/8451 Архитектура корпоративных программных приложений http://www.books.ru/shop/books/156126 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2004, 00:06 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
2 ignaci Насчет электронной версии не в курсе. Наверняка есть, но я не умею искать такую инфу в нете. :( Тока если попадется чья-нибудь ссылка. А поисковики посылают только в магазины. :( 2 jazzy Первая книга конечно классика, но в ней не найти хорошей теории именно по обсуждаемому вопросу. Вторую не читал, но вообще у Фаулера книги не плохие. Если вы читали, то не могли бы кратенько охарактеризовать ее? Типа мнение о книге, актуальность и т.п. А то эти аннотации на books.ru только курам на смех. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2004, 07:48 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
первую книгу я упомянул потому как в топике был задал вопрос "как разобраться которые классы подобного приложения должны относится к бизнес-логике, а которые к чисто техническому коду, а которые к интерфейсу с пользователем". если такой вопрос ставится — очевидно человек не знаком с классикой... =) вторая книга больше относится к данному вопросу — там несколько глав как раз посвящены паттернам взамодейсвия с базами. готовых решений вы в ней тоже, естественно, не найдете, но зато получите представление "как жить дальше". примеры реализации паттернов приводятся на джаве и C#, но реализовать их на C++, думаю, не проблема... общее мнение — эту книгу вместе с первой должны прочитать все, кто пишет приложения сложнее домашних страничек... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2004, 15:03 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
2 ignaci Ларман. Применение UML и шаблонов проектирования. 2-е издание. http://www.books.ru/shop/books/25832 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2004, 15:19 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
2 jazzy Спасибо за комментарий. Прикуплю этот труд себе в библиотеку. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2004, 15:44 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
вау! появилось новое поколение килобитовцев 1024 !!! я все же больше готов отнестись с уважением к бедному килобиту который один пуп рвал над непосильной задачей и (я искренне надеюсь) таки понял что к чему... ответ на ваш вопрос ребята - циплят по осени считают - т.е. сумма материального и морального благополучия - показатель правильности или неправильности почти всего в этом мире - проектов идей жизненных путей философий или их отсутствия... гыгы.. творите. не забудьте прислать открытку с первой прибыли ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2004, 19:13 |
|
работа с реляционными данными в объектно-ориентированых программмах
|
|||
---|---|---|---|
#18+
Наткнулся я на интересную статейку по этой теме (на русском), вроде дает ответы на большенство моих вопросов . Если кому интересно можете посмотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2004, 12:53 |
|
|
start [/forum/topic.php?fid=17&fpage=127&tid=1354057]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 167ms |
0 / 0 |