Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1100456123
CyberNETic
2004-11-14 21:15
2004.11.28
Проблема с TabControl


1-1100467560
dron-s
2004-11-15 00:26
2004.11.28
Ключ реестра


3-1099464821
Iova
2004-11-03 09:53
2004.11.28
Как определить тип поля?


1-1100628629
rom
2004-11-16 21:10
2004.11.28
проблемы с перерисовкой надписи


8-1093358756
redlord
2004-08-24 18:45
2004.11.28
как стереть изображение в компоненте Image





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский