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

Вниз

Вопрос по проектированию класса   Найти похожие ветки 

 
Megabyte ©   (2006-10-30 10:09) [0]

Создаю класс, который будет:
1) Делать выборку из БД;
2) Формировать отчет в excel;
3) Отправлять отчет на e-mail.

Соответственно, делаю 3 метода:
1) Выборка и получение Датасета;
2) Получение Excel-отчета;
3) Отправление письма с приаттаченным файлом.

Создаю компоненты работы с БД в 1-м методе, там же хочу их уничтожить. Надо как-то передать набор данных в следующий метод(через результат 1-го метода, кот. является функцией). Вопрос: каким образом передать именно набор данных, а не ссылку на класс TpFIBDataSet? Пока объявил тип функции как TpFIBDataSet, но, как я понимаю, при выходе из 1-го метода(уничтожение компонентов работы с БД) ссылка будет неверной.
Можно, конечно, формировать отчет в Excel"е в том же методе, но хочется вынести это в отдельный метод.
Либо можно сделать компоненты работы с БД глобальными и уничтожать после формирования отчета, но это, по-моему, не есть гуд.
Я так понимаю, мне надо использовать клиентский набор данных?


 
StriderMan ©   (2006-10-30 11:21) [1]


> ..там же хочу их уничтожить..

зачем уничтожать если передавать собрался?

если уж визуально не катит все делать, сделай компоненты доступа в private своего класса. Создавай в конструктор, разрушай в деструкторе.

> Вопрос: каким образом передать именно набор данных

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


 
Megabyte ©   (2006-10-30 13:08) [2]

Точно. Что-то я про конструктор с деструктором забыл. %)


 
Рамиль ©   (2006-10-30 14:14) [3]

Надо стараться, что бы порядок вызова методов не влиял на работу класса, это признак плохого проектирования.
может лучше один public метод, а в private три метода, если так удобно?


 
Megabyte ©   (2006-10-30 17:51) [4]


> Надо стараться, что бы порядок вызова методов не влиял на работу класса

Это понятно. Просто 2-й метод(получение отчета в Excel) не мыслим без 1-го метода(получение НД).
Но я специально их разделил, чтобы в будущем можно было провести, если потребуется, какие-то доп. действия с НД.
Методы объявлены как protected и являются функциями. А доступ к ним(запуск метода) идет через public-свойства, т.е. у меня есть свойство OtchetDataSet и AttachFile(файл excel, кот. будет прикрепляться к письму).


 
Reindeer Moss Eater ©   (2006-10-30 17:55) [5]

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

А что, датасет этот не является членом класса?
Зачем его куда-то передавать?

И вообще зачем здесь класс, если процедурного подхода здесь за глаза и за уши?



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

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

Наверх




Память: 0.48 MB
Время: 0.032 c
6-1150433786
Lex_!
2006-06-16 08:56
2006.11.19
Sessions в ISAPI приложениях


15-1162451743
StriderMan
2006-11-02 10:15
2006.11.19
Delphi + FreeBSD. Возможно ли?


2-1162462552
Dan19845
2006-11-02 13:15
2006.11.19
Люди помогите свернуть программу в SystemTray


15-1161987121
Gero
2006-10-28 02:12
2006.11.19
Часы спешат


2-1162620441
Shopot
2006-11-04 09:07
2006.11.19
Функции Delphi.