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

Вниз

Разработка объектной модели   Найти похожие ветки 

 
Moiseev-KN ©   (2004-11-11 12:05) [0]

Приветствую Вас, уважаемые мастера.
Вот уже несколько лет занимаюсь изучением Дельфи (к сожалению в основном по книгам) и ни где немогу найти нормального описания создания программ с применением объектной модели.
Например в данный момент пишу складскую программу, но, какие классы создавать и какими методами и свойствами их наделять не представляю :-(
А писать по старинке чесно говоря немного надоело...
Хочется узнать что-то новое...
Может подмогнете кто чем может, кто дельным советом что почитать, а кто каким-нить абстрактным примером...


 
Digitman ©   (2004-11-11 12:50) [1]


> Например в данный момент пишу складскую программу, но, какие
> классы создавать и какими методами и свойствами их наделять
> не представляю


ну как минимум некий класс типа TСклад

что значит "не представляю" ?

чем в реальной жизни характеризуется некий реальный склад некоей реальной конторы ?

уж как минимум адресом, МОЛ, номенклатурой-количеством-стоимостью барахла, в нем хранимого ..


 
wnew ©   (2004-11-11 12:54) [2]

В любой литературе посвящённой ООП, независимо от языка программирования, обычно даются наглядные примеры и проводятся паралели между реальными и программными объектами.


 
Moiseev-KN ©   (2004-11-11 13:01) [3]

Digitman
То бишь грубо говоря берем объекты (естессено не все) базы данных и создаем соответствующие классы в программе плюс несколько дополнительных для внутренних нужд софтины?


 
zhe   (2004-11-11 13:02) [4]

главное - помнить основной принцип ООП: объект - абстрактная структура данных, описывающая поведения некоего реального предмета. когда-то, когда я только перехожил с TP на Delphi я тоже думал: "ну и нафига эти классы и объекты? я и без них прекрасно обойдусь". сейчас ясно, что без них в современном программировании и двух шагов толком не ступишь. на мой взгляд, решение ввести класс приходит как-то само собой: пишешь код и у тебя в голове тикает - "вот тут будет класс". нужно осознать, что класс - некая логическая еденица, имеющая свойства, по которым её можно описать, и умеющая что-то делать. теория - ничто, если она не закреплена практикой, вам нужно просто накачать несколько программ с исходными кодами(нормально написанными) и детально проанализировать.     успехов


 
palva ©   (2004-11-11 13:03) [5]

Если нужно ООП, то и читать надо не по Delphi а по ООП. К сожалению обычно для иллюстрации в таких книгах используется не Delphi а C++. Если C++ не напрягает, то читайте последнюю книгу из списка
http://anatolix.naumen.ru/oodesignbooks.htm


 
Digitman ©   (2004-11-11 13:09) [6]


> объекты базы данных


что ты под сим понимаешь ?


 
Moiseev-KN ©   (2004-11-11 13:28) [7]


> Digitman ©   (11.11.04 12:50) [1]
>
> ну как минимум некий класс типа TСклад
...
> уж как минимум адресом, МОЛ, номенклатурой-количеством-стоимостью
> барахла, в нем хранимого ..

То есть берем часть объектов базы и переносим их в программу в виде классов наделив соответствующими свойствами?


 
Moiseev-KN ©   (2004-11-11 13:32) [8]


> Digitman ©   (11.11.04 13:09) [6]
>
> > объекты базы данных
>
>
> что ты под сим понимаешь ?

Некие сущности, товар который обладает определенными свойствами(размеры, масса...), счета, накладные и т.д.


 
Digitman ©   (2004-11-11 13:38) [9]


> Moiseev-KN ©   (11.11.04 13:28) [7]


нет, ну База-то тут причем ?
никто не спорит, что База нужна, но вопрос-то у тебя о другом совершенно : как описать объектные сущности (и их взаимодействие) реального мира средствами ООП в Делфи ...

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


 
Moiseev-KN ©   (2004-11-11 13:47) [10]


> Digitman ©   (11.11.04 13:38) [9]

Ну вот потихоньку начинаю въезжать :)
Просто когда на разработку даеться достаточно короткий срок, а с данной (склад) отрослью еще не связывался достаточно тяжко понять что от тебя хотят и задовать работадателю правильные вопросы...
И хотя до этого было несколько проектов в связке D7-IB но времени во первых было больше, а во вторых предмет был известен.


 
msguns ©   (2004-11-11 14:01) [11]

Я, к примеру, первые шаги к объектам применительно к БД делал так: в датамодуле прописывал рекорды, каждая из которых отражала фактически структуру полей соотв.таблицы БД. Далее в приложении, если мне надо было обратиться к полям записи какого-нибудь датасета, я обращался к полям рекорда. Рекорды заполнялись методами, определенными мною в этом же датамодуле, обращение к которым выполнялось, к примеру в обработчике OnAfterScroll соотв.датасета.
Потом до меня дошло, что изменять записи в таблице также удобно через "объект". В результате рекорды были заменены на классы с методами. Потом появились события, с помощью которых было легко делать модификации в подчиненных таблицах и т.д.


 
freeman82   (2004-11-11 14:16) [12]

Прокоментируйте пожалуйста данный код,правильно ли я делаю и, если нет то в чем ошибка(это конечно не полное описании классов).

unit uClasses;

interface

uses
 SysUtils, Windows, Messages, Classes, Graphics, Controls,
 Forms, Dialogs,uConnection;

type
 TTehnika = class (TObject)
 private
   FID: Integer;
   FInvN: string;
   FKimnataID: Integer;
   FSerN: string;
 public
   property ID: Integer read FID write FID;
   property InvN: string read FInvN write FInvN;
   property KimnataID: Integer read FKimnataID write FKimnataID;
   property SerN: string read FSerN write FSerN;
 end;
 
 TMonitor = class (TTehnika)
 private
   FDiagonal: Integer;
   Fname: string;
 public
   class procedure Delete(ID:integer);
   procedure GetMonByID(ID:integer);
   class procedure Insert(name,SerN.InvN,diag:string);
   property Diagonal: Integer read FDiagonal write FDiagonal;
   property name: string read Fname write Fname;
 end;
 

procedure Register;

implementation

procedure Register;
begin
end;

{
*********************************** TMonitor ***********************************
}
class procedure TMonitor.Delete(ID:integer);
var
 SP:TADOStoredProc;
begin
 SP:=TADOStoredProc.Create(nil) ;
 SP.Connection := ADOConnection1;
 SP.ProcedureName :="DelMon";
 SP.Close;
 SP.Prepared :=false;
 SP.Parameters.Refresh;
 SP.Parameters.ParamByName("@MonId").Value :=ID;
 SP.exec;
 SP.free;
end;

procedure TMonitor.GetMonByID(ID:integer);
var
 SP:TADOStoredProc;
begin
 SP:=TADOStoredProc.Create(nil) ;
 SP.Connection := ADOConnection1;
 SP.ProcedureName :="GetMonByID";
 SP.Close;
 SP.Prepared :=false;
 SP.Parameters.Refresh;
 SP.Parameters.ParamByName("@MonId").Value :=ID;
 SP.open;
 Fname:=SP.FieldByName("mon_name").AsString;
 FDiagonal:=SP.FieldByName("diagonal").AsString
 SP.close;
 SP.free;
class procedure TMonitor.Insert(name,SerN.InvN,diag:string);
var
 SP:TADOStoredProc;
begin
 SP:=TADOStoredProc.Create(nil) ;
 SP.Connection := ADOConnection1;
 SP.ProcedureName :="InsMonitor";
 SP.Close;
 SP.Prepared :=false;
 SP.Parameters.Refresh;
 SP.Parameters.ParamByName("@MonName").Value :=name;
 .....
 è ò.ä.
 .....
 SP.exec;
 SP.free;

end.


 
freeman82   (2004-11-11 15:19) [13]

up



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

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

Наверх




Память: 0.51 MB
Время: 0.036 c
3-1099192478
ali_t
2004-10-31 06:14
2004.11.28
локальная бд


14-1100357512
AlexG
2004-11-13 17:51
2004.11.28
Что лучше купить: GeForce или Radion?


1-1100336552
ceval
2004-11-13 12:02
2004.11.28
архивация файлов


14-1100313119
DelphiN!
2004-11-13 05:31
2004.11.28
Есть ли в DMClient-е поиск по базе данных сайта Мастаков?


4-1097821383
shelest
2004-10-15 10:23
2004.11.28
Запуск программы под другим пользователем.