Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ООП [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]

Что, опять?

Называй сумму за разработку проекта и умножай её на количество созданных тобой одинаковых веток.


Наверх

Титульная страница Поиск, карта сайта Написать письмо