Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизВопрос по проектированию класса Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c