Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.26;
Скачать: CL | DM;

Вниз

Еще про DataLayer, а как предпологается быть с отображением?   Найти похожие ветки 

 
Kolan ©   (2007-07-18 21:09) [0]

Здравствуйте,
 В продолжение ветки:
http://delphimaster.net/view/15-1184071382/

Идея примерно мне ясна, а как быть напрактике, как реализовать отображение&#133

Конкретный вопрос:

Итак есть такие объекты в Domain:

Какой-то элемент:
TItem = class
 FID: Integer;
 FValue: string;
end;


И список таких элементов:
TItemList = class(TObjectList)
 function Add(Item: TItem): Integer;
 propert Items[Index: Integer]: TItem &#133
end;


И, допустим, есть Mapper, который умеет отображать TItemList в БД.

TItemListMapper = class
 procedure MapItem(ItemList: TItemList);
end;


В БД есть соотв. таблица:


Items
ID: Integer
Value: string


Теперь сам вопрос:
Допусти п ТЗ задача редактировать список ItemList"ов В таблице. Если пользовать стандартный Delphi, то можно кинуть DBGrid подключить его прям к таблице Items и все — на редактируй.

А в случае с DataLayer — как предоставить возможность редактирования? Какой компонент использовать? И что будет с производительностью? А если записей много?


 
Kolan ©   (2007-07-19 10:05) [1]

Как то страшно делать проект не даже примерно не понимая как делать UI.


 
Игорь Шевченко ©   (2007-07-19 10:24) [2]


> ? Какой компонент использовать?


Руки.pas

Я в свое время плюнул на проблему отображения списка моделей и честно отображал собержимое DataSet в DBGrid, бо проще. Да, чистая теория пострадала, ну и хрен бы с ней. Если ты заметишь, то в теории про Delphi с ее готовым механизмом не упоминается, хочется странного - иди на сайт
tiopf - они много преуспели в чистой теории.


 
Kolan ©   (2007-07-19 10:49) [3]

> Я в свое время плюнул на проблему отображения списка моделей
> и честно отображал собержимое DataSet в DBGrid, бо проще.

Раскажите подробнее как бы вы реализовали то что я привер в кач примера. Я тоже понимаю, что сделать все с пом. руки.pas я просто не смогу физически.

Как вы реализовали взаимодействие? Для чего тогда нужен Domain? Есть ли в этом случае DataLayer и что он делает? Объясните, пожалуйста, а то я уже проектировать программные классы должен начать, а все еще остался вопрос «зачем?».


 
Игорь Шевченко ©   (2007-07-19 10:53) [4]


> Раскажите подробнее как бы вы реализовали то что я привер
> в кач примера


С картинками ?

Эт можно. Написал бы Dataset, возвращающий SELECT id,value FROM table и работал бы с ним посредством DBGrid.

И все.


 
Kolan ©   (2007-07-19 11:06) [5]

> [4] Игорь Шевченко ©   (19.07.07 10:53)
> С картинками ?


Да. А зачем послали читать Лармана и Файлера, если все сводится к киданию двух компонентов?

Понятно пример элементарный, но я хотел на нем получить пример архитектуры всеже есть Domain и DataLayer, но используются и стандартные компоненты Delphi&#133

Или например на DataLayer используется не маппер, а что то проще.
Или может Domain состоит из экземпляров TDataSet.

Как быть, просветлите? Сейчас в голове неразбериха. Теорию я понимаю, а как это реализовать — нет :(


 
Игорь Шевченко ©   (2007-07-19 11:20) [6]


> А зачем послали читать Лармана и Файлера, если все сводится
> к киданию двух компонентов?


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

Я сильно сомневаюсь, что тебе по роду деятельности приходится иметь дело только с такими таблицами, впрочем, это не интересно.


> Понятно пример элементарный, но я хотел на нем получить
> пример архитектуры всеже есть Domain и DataLayer, но используются
> и стандартные компоненты Delphi…


А зачем оно - на элементарном примере ? Элементарные примеры проще делать на том, что предназначено для элементарных примеров, а именно на Delphi и стандартных компонентах VCL.


> Как быть, просветлите?


Например, сходить на сайт tiopf (найти в google по указанному слову).


> Или например на DataLayer используется не маппер, а что
> то проще.
> Или может Domain состоит из экземпляров TDataSet.


Эта...у меня твой кэш не загружен...


 
Kolan ©   (2007-07-19 11:29) [7]

> Я сильно сомневаюсь, что тебе по роду деятельности приходится
> иметь дело только с такими таблицами

Ессно они сложнее их больше, но на простом примере же всего понимание приходит.


> А зачем оно — на элементарном примере ?

Ладно усложню, раз так хотите. Допустим есть два подкласса TItem

1.
TFirstItem = class(TItem)
 FS: string;
end;

2.
TSecondItem = class
 FI: Integer;
end;


И соответствующие им TFirstItemList TSecondItemList


И соответственно две таблицы:

IFirsttems
ID: Integer
Value: string
S: string

ISecondtems
ID: Integer
Value: string
I: Integer


И есть два алгоритма обработки TItem. В зависимости от того к какому подклассу отностися данный экземпляр.
Работая с объектами я бы ессно применил паттерн стратегия и спал спокойно.

А как


> Например, сходить на сайт tiopf

Сходил уже. Читаю — это сохранение в основном, а меня заботит


 
Kolan ©   (2007-07-19 11:32) [8]

&#133 случаено нажал Ctrl+Enter&#133

И вот у меня два вопроса.

В случае с наличием Domain я незнаю как отображать, но знаю как выбрать и применить нужный алгоритм(стратегия)
В случае без Domain отображать как понятно — непонятно как быть с алгоритмами и их выбором&#133\

Сходил уже. Читаю — это сохранение в основном, а меня заботит UI


 
Kolan ©   (2007-07-19 21:17) [9]

Плохой пример что ли?

ЗЫ
 Хотя я считаю что объяснить прше на первом примере&#133


 
Kolan ©   (2007-07-24 16:55) [10]

> [2] Игорь Шевченко ©   (19.07.07 10:24)
> Руки.pas

Что-то они уже болят, но кажется стало вырисовываться. Пока отображаю на StringGrid. Осталось сделать редактирование&#133


 
clickmaker ©   (2007-07-24 17:21) [11]


> меня заботит UI

UI должно заботить заказчика и постановщика задачи (если, конечно, ты не оба сразу в одном лице).
Чем точнее они тебе обрисуют, какое они хотят УИ, тем меньше головной боли всем


 
Kolan ©   (2007-07-24 17:56) [12]

Да тут даже дело не в заказчике, тупо сделать так, чтобы при редактировании StringGrid(например) изменялся объект в Domain не так и просто&#133  :(


 
Sergey Masloff   (2007-07-24 20:51) [13]

Kolan ©   (24.07.07 17:56) [12]
А теперь подумай про то что делать когда при изменении одного атрибута изменились (следуя бизнес-логике) еще несколько. И юзер желает это видеть немедленно.
 А потом подумай на хрена эту дурь городить. Из чистоты теории? Паттерны?
Так посмотри на связку DataSet-DataSource-DataAwareControl. И подумай а тут уже паттерны не применены ли? И писали это люди не поумней чем колян да сергей маслов? И напишешь ли ты хоть когда-нибудь хоть что-то не то что лучше - хотя бы такое же? ;-)))


 
Kolan ©   (2007-07-24 21:35) [14]

> А теперь подумай про то что делать

Дык вот думаю. Я понимаю что тут возникают трудности&#133 Изменения в Domain внести гораздо легче буде,а с UI и DataLayer проблеммы, потому, что я их хреново реализовал.


> DataSet-DataSource-DataAwareControl

Моё имхо — это плохой путь и если я по нему пойду, то никогда не дорасту до настоящего программиста.
Надо попробовать, ведь незря же Умные люди книги пишут&#133
Да и я за время работы без БД немогу перестроиться на это батонокидательство сразу :(


> И подумай а тут уже паттерны не применены ли?

Да причем тут паттерны.


 
Игорь Шевченко ©   (2007-07-25 10:19) [15]


> Так посмотри на связку DataSet-DataSource-DataAwareControl.
>  И подумай а тут уже паттерны не применены ли? И писали
> это люди не поумней чем колян да сергей маслов? И напишешь
> ли ты хоть когда-нибудь хоть что-то не то что лучше - хотя
> бы такое же? ;-)))


В этом и беда разработчиков на Delphi, что они отравлены ядом двухслойной архитектуры. Data-aware controls писались для парадокса и иже с ним


 
Kolan ©   (2007-07-25 10:36) [16]

> В этом и беда разработчиков на Delphi, что они отравлены
> ядом двухслойной архитектуры.

Получается выход в уходе с Delphi?


 
Polevi ©   (2007-07-25 10:37) [17]

>Игорь Шевченко ©   (25.07.07 10:19) [15]
ерунда какая, я вот пользуюсь без парадоксов


 
Игорь Шевченко ©   (2007-07-25 11:09) [18]

Polevi ©   (25.07.07 10:37) [17]

Отнюдь не ерунда. Я тоже пользуюсь - а зачем велосипед изобретать. Но при попытке выйти за рамки сразу наступаю на те же грабли, что и автор ветки.
Ты на tiopf сходи, глянь зачем люди ерундой страдали, мегабайты кода написали.
Сравни с архитектурой .Net.

Kolan ©   (25.07.07 10:36) [16]


> Получается выход в уходе с Delphi?


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


 
Kolan ©   (2007-07-25 11:21) [19]

> Зачем куда-то уходить

Просто я крутил ECO:
http://dn.codegear.com/article/33669

Гораздо понятнее, но только по Net.

Уходить есно не буду, тк ничего другого хорошо незнаю.


> только не надо к собаке приделывать несвойственные ей лишние
> конечности.


> они отравлены ядом двухслойной архитектуры

В смысле травиться предлогаете?


 
Игорь Шевченко ©   (2007-07-25 11:35) [20]

Kolan ©   (25.07.07 11:21) [19]


> В смысле травиться предлогаете?


Если ты посмотришь все книги про паттерны и прочие теории, то заметишь, что про Delphi там вообще ни слова. Там все слова про Java, C++ и .Net

В смысле предлагаю пользоваться теми возможностями инструмента, которые ему присущи, а не желать странного.

В древнем Китае желающим странного отрубали голову. Во избежание.


 
Kolan ©   (2007-07-25 22:00) [21]

> что про Delphi там вообще ни слова

В книге Фаулера про корп. приложения есть про Delphi мельком, говорит что мол все равно&#133


> В древнем Китае желающим странного отрубали голову. Во избежание.

Фух, ххорошо что мы в разных городах живём.


> В смысле предлагаю пользоваться теми возможностями инструмента,
> которые ему присущи, а не желать странного.

Желаю правильного :(.

ЗЫ
 В итоге я сделал отображнеие в StringGrid и забил&#133 Хорошо хоть другая работа не так связана с базами. Там буду применять прочитаное&#133

Благодарю за обсуждение.


 
Игорь Шевченко ©   (2007-07-26 10:32) [22]

Kolan ©   (25.07.07 22:00) [21]

Собственно, давно известно, что с объектами в сложных системах работать удобнее и код получается более сопровождабельный, так как логику от отображения отделить проще.
DB-Aware controls в Delphi с объектами никак не связаны - это две перпендикулярные линии. Для простых данных из предметной области этого достаточно, для сложных начинается кошмар с размытой по программе логикой.

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



Страницы: 1 вся ветка

Текущий архив: 2007.08.26;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.022 c
2-1185765047
delphino
2007-07-30 07:10
2007.08.26
Работа с программой нескольких пользователей.


15-1185530398
Crazybobr
2007-07-27 13:59
2007.08.26
Вы бы купили клавиатуру за 43990 руб.?


2-1185954821
WFS
2007-08-01 11:53
2007.08.26
Можно ли как-нибудь выделить одну ячейку в DBGride?


15-1185885205
click
2007-07-31 16:33
2007.08.26
Посоветуйте литературу


15-1184778574
Kolan
2007-07-18 21:09
2007.08.26
Еще про DataLayer, а как предпологается быть с отображением?