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