Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разнесение логики представления, бизнес-логики и логики хранения по разным модулям / 21 сообщений из 21, страница 1 из 1
20.04.2004, 17:25
    #32488395
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Я в одной книжке прочитал, что нехорошо мешать в кучу эти три вида "логики", поскольку такой стиль затрудняет сопровождение. И автор советует всегда их разделять. В той книге был такой пример. Предположим, надо покрасить какие-то суммы выше какой-то величины красным цветом. Если прямо в интерфейсе прописать эту границу, то получится, что интерфейс осведомлен о бизнес-правиле, что считается делом нехорошим, поскольку интерфейс про бизнес-логику знать ничего не должен. Типа в этом случае интерфейс должен спросить бизнес-логику "А числа выше какой границы красить".
Имея нехорошую привычку мешать все в кучу в модулях форм, мне бывает непросто определить, как правильно разнести эти три вида кода.
Если у кого есть успехи в данном деле, поделитесь опытом?
...
Рейтинг: 0 / 0
20.04.2004, 20:13
    #32488652
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
У меня опыта мало, но меня учили так: представь, что завтра та же программа будет работать с другой базой (совсем другой синтаксис обращений к данным) и с другим интерфейсом (совсем другой синтаксис обращений к экрану). Соответственно, писать надо так, чтобы было как можно проще эти две вещи найти в программе и заменить на другие.
...
Рейтинг: 0 / 0
20.04.2004, 20:15
    #32488654
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Хотя в Аксессе это крайне сложно, потому что форма сразу выводит данные на экран, минуя всякую бизнес-логику.
...
Рейтинг: 0 / 0
20.04.2004, 21:05
    #32488686
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Владимир Саныч,
Сижу, пробую создать псевдообъектноориетированный код. Получается такой изврат. Предположим, по нажатию кнопки что-то должно происходить. Из модуля формы программа сразу идет в глобальный модуль, где расположена основная программа. Код, связанный с интерфейсом формы вынесен в отдельную функцию и разбит метками на секции, чтоб легче было вызывать. Из основного куска кусок кода интерфейса вызвается типа такого
call Forms.MyFrmName.InterfaceX(1) 1- метка секции. Разбить функцию на части мне показалось как-то удобнее, чем делать несколько функций и процедур. Получается, как бы вызываешь метод класса в ОО-языках. Ну и с методами хранения наподобие, неудобно только, что все функции сваливаются в кучу, а не прячутся внутри классов, как в ОО-языках.
Читать код стало вроде бы полегче, чем одну простыню, где все подряд наколбашено.
...
Рейтинг: 0 / 0
21.04.2004, 00:13
    #32488754
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Ну так это просто что-то из области структурного программирования. Тоже хорошая вещь, но не про то.
...
Рейтинг: 0 / 0
21.04.2004, 08:19
    #32488833
Exquisite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Varan, занимался чем-то вроде и пришел к выводу, что самым красивым решением является использование конструкции "WithEvents". Т.е. форма только отражает данные, а созданный модуль, перехватывающий события в этой форме, занимается бизнес-логикой. Таким образом, одна и та же форма, при наличии разных "обрабатывающих" модулей может вести себя абсолютно по-разному, при этом нет необходимости что-либо вызывать из модуля формы - необходимый "бизнес-лоджик-модуль" будет сам вызываться по событиям формы.
Если правильно понял задачу.
...
Рейтинг: 0 / 0
21.04.2004, 11:48
    #32489280
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Exquisite,
А нет ли примера, где можно посмотреть, как применяется такой подход?
...
Рейтинг: 0 / 0
21.04.2004, 21:28
    #32490818
Exquisite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Для Varan:
>А нет ли примера, где можно посмотреть, как применяется такой подход?

Есть, но он слишком наворочен. Выдернуть - лучше с нуля накидать, что и сделал... И отослал бы на мыло, ежли б знал

А это про то, что "накидал":

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

По большому счету этот вариант (в таком его использовании) просто позволяет физически разделить строки кода, реализующие различные функциональные задачи.

Кстати, можно "подключить" одновременно несколько модулей класса.
И еще много чего "можно"...

С уважением.
...
Рейтинг: 0 / 0
21.04.2004, 21:52
    #32490828
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Exquisite,
Мой почтовый адрес в профиле.
Бросьте, если есть возможность, туда пример.
А обилия кода я уже давно не боюсь, главное, чтоб он интересным и красивам был...
Надо стремиться к прекрасному...
...
Рейтинг: 0 / 0
21.04.2004, 22:10
    #32490838
Exquisite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Отослал... Формат - А2000 (А97 и ниже WithEvents не понимают).
По поводу красоты кода в примере... ээээээ... Ну вообщем, увидишь сам :)
...
Рейтинг: 0 / 0
21.04.2004, 22:29
    #32490846
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Exquisite , получил, спасибо. Открывается. Завтра посмотрю.
...
Рейтинг: 0 / 0
21.04.2004, 23:17
    #32490883
AlTis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Интересная вещь.
Если можно намыль пожалуйста на TisAlex@yahoo.com
...
Рейтинг: 0 / 0
22.04.2004, 01:39
    #32490926
EDUDK01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Мне тоже можно кусочек кода пожалуйста? :)
englishchannel@rambler.ru
...
Рейтинг: 0 / 0
22.04.2004, 07:20
    #32490975
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
ну и мне...
мыло в профиле.
...
Рейтинг: 0 / 0
22.04.2004, 08:54
    #32491048
Exquisite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Даже не думал, что будет такой интерес к теме. Сейчас уже надо бежать (не программисты мы), а вечером кое-что добавлю в пример, кое-что "прикрасивлю" и отошлю тем, кто попросил. Ну и выложу где-нибудь у АМ'а (на русьимпорте). Ссылку дам. ОК?
З.Ы. Если Varan не придет со словами: "Что за ерунду мне подсунули?!"
...
Рейтинг: 0 / 0
22.04.2004, 09:26
    #32491089
Yanis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
ОК, жду (ждем) ссылку
...
Рейтинг: 0 / 0
22.04.2004, 12:15
    #32491471
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
присоединяюсь.....
...
Рейтинг: 0 / 0
22.04.2004, 14:19
    #32491829
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Exquisite ,
Не знал, что события формы можно отлавливать через независимые модули класса.
Если делать тупо, то для того, чтобы реализовать несколько вариантов поведения формы, пришлось бы, наверное, в каждом обработчике события в модуле формы устраивать select ....case, который бы выбор по какому варианту обработать событие.
Наверное, таким способом можно реализовать разное поведение одной и той же формы для разных групп пользователей. При запуске происходит идентификация пользователя, подключается соответствущая "логика"...
В общем, интересная идея, как-нибудь попробую ее применить, заодно освежив знания про независимые модули класса, которыми я как-то не очень увлекаюсь. Зря, наверное.
...
Рейтинг: 0 / 0
22.04.2004, 16:45
    #32492405
Exquisite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
Пример немного переделал (в лучшую сторону) - теперь в нем можно подсоединить сразу два модуля.

Высылаю всем попросившим, а выложить... выложить чуть позже, видимо...
Сорри...
...
Рейтинг: 0 / 0
22.04.2004, 16:48
    #32492415
Exquisite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
В догонку:
в случае подключени сразу нескольких модулей к форме можно как раз функционально разделить код: например, в одном модуле код обрабатывает событие "Текущая запись" с какой-то одной целью, а в другом - с другой целью. Звучит геморно, но как раз при ФУНКЦИОНАЛЬНОМ разделении кода - лучше трудно придумать...
...
Рейтинг: 0 / 0
22.04.2004, 16:51
    #32492434
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разнесение логики представления, бизнес-логики и логики хранения по разным модулям
А мы все так надеялись.....
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разнесение логики представления, бизнес-логики и логики хранения по разным модулям / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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