Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Вниз

Еще про 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.044 c
15-1185183893
Tdu
2007-07-23 13:44
2007.08.26
создание на Delphi dll для Матлаба


2-1185615743
Alex8
2007-07-28 13:42
2007.08.26
SQL


15-1185785892
click
2007-07-30 12:58
2007.08.26
плавный скроллинг TScrollBox


2-1185989348
rlzzz
2007-08-01 21:29
2007.08.26
Люди Как массив заполнить?


15-1185875868
Igorek
2007-07-31 13:57
2007.08.26
Чем чревато?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский