![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ООП [D6]
ZDenis © (2004-09-07 15:18:00)есть БД,таблица скажем Printer,хранимые процедуры реализующие добавление,редактирование,удаление записи и т.п.
Нужно написать клиентскую часть с использованием ООП.
Как правильно описать класс и методы класса например TPrinter,реализующие добавление,редактирование записи и т.п. ?
ZDenis (2004-09-08 14:24:00) [1]>Плохиш
>Ega23
>Reindeer Moss Eater
Спасибо за ответы.
Еще вопросик как реализовать метод add;
например
printer.add(name,sern,...:string);
begin
with printer.SP do begin
ProcedureName :='AddPrinter';
Parameters.Refresh;
Parameters.ParamByName('@PrinterName').Value :=name;
Parameters.ParamByName('@PrinterSerN').Value :=SerN;
......
ExecProc;
end;
end;
или сначала заполнить поля объекта Printer
Printer.name:='HP';
printer.serN:='sdgs';
а метод реализовать как
printer.add;
begin
with printer.SP do begin
ProcedureName :='AddPrinter';
Parameters.Refresh;
Parameters.ParamByName('@PrinterName').Value :=Printer.name;
Parameters.ParamByName('@PrinterSerN').Value :=Printer.SerN;
.......
ExecProc;
end;
Плохиш (2004-09-08 13:09:00) [2]
> ZDenis © (08.09.04 12:46) [17]
sp сделать приватным свойством и [18] делать в TPrinter.create, а освобождать в TPrinter.Destroy.
Reindeer Moss Eater (2004-09-08 12:49:00) [3]printer.sp:=TStoredProc.Create(nil);
ZDenis (2004-09-08 12:46:00) [4]>Ega23 ©
Так вот я и хочу узнать как правильно это сделать.
А если я в классе объявлю своиства SP:TADOStoredProc;
а затем
Printer:=TPrinter.create;
printer.sp:=...;
printer.add;
Ega23 (2004-09-08 12:36:00) [5]Я надеюсь, ты должен понимать, что если ты пишешь универсальный класс, то в его методах не должно быть никаких
with DM1.SP1 do begin. Твой класс должен работать только со своими полями.
ZDenis (2004-09-08 12:32:00) [6]>Ega23 ©
3. Что же всё-таки ты хочешь? Распиши проблему ПОДРОБНО. У меня есть кое-какие догадки, но это только догадки.
У меня есть процедура добавления,редактирования,удалении в бд записи о принторе и т.п.(монитор,клавиатура)
procedure addItem(Name,SerN,InvN,Komnata,prim:string);
begin
with DM1.SP1 do begin
ProcedureName :='AddPrinter';
Parameters.Refresh;
Parameters.ParamByName('@PrinterName').Value :=name;
Parameters.ParamByName('@PrinterSerN').Value :=SerN;
Parameters.ParamByName('@PrinterInvN').Value :=InvN;
Parameters.ParamByName('@Komnata').Value :=Komnata;
Parameters.ParamByName('@prim').Value :=prim;
ExecProc;
end;
Я хочу реализовать класс например TPrinter,чтобы потом в программе можно было объявив переменную Printer:Tprinter;
скажем при клике на копке вызвать метод Printer.add;
Как правильно описать такой метод в классе?
и правильный ли такой подход?
Ega23 (2004-09-07 17:44:00) [7]1. Код в [13] - в помойку! Срочно!
2. Класс TPrinter уже есть. Я думаю ты не сильно удивишься, когда догадаешься для чего он.
3. Что же всё-таки ты хочешь? Распиши проблему ПОДРОБНО. У меня есть кое-какие догадки, но это только догадки.
ZDenis (2004-09-07 16:29:00) [8]>Ega23 ©
Как правильно описать класс и методы класса например TPrinter,реализующие добавление,редактирование записи и т.п. ?
точнее метод добавления например т.к. в приведенном коде или
правильнее было бы создать экземпляр класса TPrinter,заполнить поля объекта а затем вызвать метод Printer.addItem;
а зачения в методе передовать из полей объекта.
interface
uses
SysUtils, Classes;
Type
TPrinter=class
private
fid:integer;
fName:string;
fSerN:string;
fInvN:string;
fUserid:integer;
fStatusid:smallint;
fPrim:string;
fKomnataId:integer;
public
constructor Create;
procedure addItem(name,SerN,InvN,Komnata,Prim:string);
implementation
uses UDm;
constructor TPrinter.Create;
begin
end;
procedure TPrinter.addItem(Name,SerN,InvN,Komnata,prim:string);
begin
with DM1.SP1 do begin
ProcedureName :='AddPrinter';
Parameters.Refresh;
Parameters.ParamByName('@PrinterName').Value :=name;
Parameters.ParamByName('@PrinterSerN').Value :=SerN;
Parameters.ParamByName('@PrinterInvN').Value :=InvN;
Parameters.ParamByName('@Komnata').Value :=Komnata;
Parameters.ParamByName('@prim').Value :=prim;
ExecProc;
end;
Dm1.SPqPrinter.Close;
Dm1.SPqPrinter.open;
end;
end.
.....
var Printer:Tprinter;
begin
printer.addItem('',''....)
end;
Ega23 (2004-09-07 16:04:00) [9]Ну тогда ты эту задачу с использованием ООП уже решил.
ZDenis (2004-09-07 16:03:00) [10]>Ega23 ©
А Form1 на твоей функционально-спрограммированной клиентской части есть?
Есть
ZDenis (2004-09-07 16:01:00) [11]>Defunct ©
Оговорился процедурного программирования
Ega23 (2004-09-07 15:58:00) [12]ZDenis © (07.09.04 15:44) [6]
А Form1 на твоей функционально-спрограммированной клиентской части есть?
Reindeer Moss Eater (2004-09-07 15:58:00) [13]А я хочу разобраться как правильно решить ту же задачу с использованием ООП.
А я вот хочу разобраться как эту задачу можно умудриться решить на Delphi без ООП.
Defunct (2004-09-07 15:46:00) [14]Что означает термин "функциональное программирование"?
ZDenis (2004-09-07 15:44:00) [15]>TUser ©
Клиентская часть уже реализованна,но по принципу функционального программирования.
А я хочу разобраться как правильно решить ту же задачу с использованием ООП.
Ega23 (2004-09-07 15:41:00) [16]TUser © (07.09.04 15:39) [3]
Не надо про Великие Проекты Века. Начинать с Автошемы нужно.
Ega23 (2004-09-07 15:39:00) [17]ZDenis © (07.09.04 15:34) [2]
Всё равно сумму называй.
TUser (2004-09-07 15:39:00) [18]А зачем тебе помогать, когда можно попросить с тебя денег? Шутка. А серьезно - ты задал вопрос 'Расскажите мне все про не знаю что, которое мне нужно неизвестно зачем, т.к. я хочу разработать игру на основе СУБД Интербайз'. На такие вопросы редко отвечают.
ZDenis (2004-09-07 15:34:00) [19]>Плохиш ©
Я не прошу разрабатывать проект,а помочь разобраться с объекно-ориентированным проектированием.
Плохиш (2004-09-07 15:20:00) [20]Что, опять?
Называй сумму за разработку проекта и умножай её на количество созданных тобой одинаковых веток.