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

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

ООП и arrays [D7, Win95/98, WinME, NT4, Win2k, WinXP]


Страницы:   1 2 3

AAAlexeyAAA ©   (2004-06-09 12:33:00) 

Добрый день мастера. Есть вопрос о том КАК красиво пользоваться ООП. У меня есть два динамических массива of integer. Ях их читаю из 2-ух тхт файлов. Далее я их преобразовываю и результат вывожу в тхт файл одним массивом. если бы это было бы в паскале, то:

procedure ReadTxtFiles;//читаю файлы и создаю дин. массивы
procedure Calculate;// считаю, пересчитываю
procedure WriteToFile; //пишу ответ в тхт
Все три процедуры запихиваю в процедуру Raschet и всё!

Вопрос: Как сделать это в ООП?...Неужели все три процедуры повесить на кнопку, обработчик события? и всё...и это всё ООП?

Или быть может создать кроме формы ещё один юнит...там создать свой объект...и т.д. и т.п...А в обработчике события на кнопке вызвать тот объект, из другого юнита.  Моя проблема вот в чем: где НУЖНО создавать свой объект, а где нет? В чём удобство и превосходство ООП. Конкретно на моей задаче...


Anatoly Podgoretsky   (2004-06-10 12:23:00) [1]

GuAV ©   (10.06.04 12:01) [56]
Можно уменьщить
asm.Instruction.AsString := 'MOV';
asm.Operand[1].AsReg := EAX;
asm.Operand[2].AsInteger := 1;
asm.Do;


GuAV   (2004-06-10 12:01:00) [2]


> asm.MOV;

нееет.
методов у этого варианта/интерфэйса/класса многовато получится.
надо так
asm.instruction(AI_MOV);


PVOzerski   (2004-06-10 11:43:00) [3]

А как такое: ;^)

asm.operand1.value:=asm.registers.EAX;
asm.operand2.value:=1;
asm.MOV;


GuAV   (2004-06-09 23:24:00) [4]

Fay ©   (09.06.04 21:24) [53]

> constructor TIntegerType.Create;
> begin
>  FValue := 0;
>  FOnChange := nil;
> end;

незаче это, поля нулятся автоматически.

> destructor TIntegerType.Destroy;
> begin
>  inherited;
> end;

тогда смысл объявлять - ?

и ваще просили сложить или знак поменять - а это тогда что? оффтопик :)


Fay   (2004-06-09 21:24:00) [5]

Извращение какое-то... 8)
type
 TIntegerType = class(TObject)
 private
   FValue : Integer;
   FOnChange : TNotifyEvent;
   procedure SetValue(v : Integer);
 protected
 public
   function GetDiv(n : Integer) : Integer;
   function GetMod(n : Integer) : Integer;
   constructor Create;
   destructor Destroy; override;
 published
   property Value : Integer read FValue write SetValue default 0;
   property OnChange : TNotifyEvent read FOnChange write FOnChange;
 end;

implementation

constructor TIntegerType.Create;
begin
 FValue := 0;
 FOnChange := nil;
end;

destructor TIntegerType.Destroy;
begin
 inherited;
end;

procedure TIntegerType.SetValue(v : Integer);
begin
 FValue := v;
 if Assigned(FOnChange) then FOnChange(Self);
end;

function TIntegerType.GetDiv(n : Integer) : Integer;
begin
 Result := FValue div n;
end;

function TIntegerType.GetMod(n : Integer) : Integer;
begin
 Result := FValue mod n;
end;


AAAlexeyAAA   (2004-06-09 21:06:00) [6]

GuAV, спасибо!
<<AAAlexeyAAA, Вам действительно это надо?>>
да, мне это нужно. иначе я б не обращался на форум.я же не ради забавы это делаю...


GuAV   (2004-06-09 18:50:00) [7]

AAAlexeyAAA   (09.06.04 18:02) [50]
оставь как есть через процедуры- уже был этот ответ.
это будет имхо по всем пунктам

******
GuAV ©   (09.06.04 16:03) [37]
type
 TBoolean=class;
 TInteger=class;

 TCustomInteger=class(TComponent)
 private
   FValue: array[1..4] of char;
   function GetBits(Index: TInteger): TBoolean;
   procedure SetBits(Intex: TInteger; const Value: TBoolean);
 protected
   property Bits[Index: TInteger]: TBoolean read GetBits write SetBits;
 end;

 TCustomBoolean=class(TCustomInteger)
 private
   function GetValue: Boolean;
   procedure SetValue(const Value: Boolean);
 protected
   property Value: Boolean read GetValue write  SetValue;
 end;

 TBoolean=class(TCustomBoolean)
 published
   property Value;
 end;

 TInteger=class(TCustomInteger)
 public
   property Bits;
 end;

и так далее.
AAAlexeyAAA, Вам действительно это надо?


AAAlexeyAAA   (2004-06-09 18:02:00) [8]

да уж...обговорили мой вопрос...
(09.06.04 16:02)....вообще проигнорировали...:(
На входе в форум есть хороший hint у ссылки: "здесь вы можете задать свой вопрос и НАВЕРНЯКА получить ответ"...
разве что "наверняка"....
благодарю за советы: Романов Р.В., Anatoly Podgoretsky, PVOzerski, DieHard.


Sandman25   (2004-06-09 17:45:00) [9]

[45] Григорьев Антон ©   (09.06.04 16:45)

А теперь опять в Java появились Integer и для указания того, что метод не виртуальный, требуется спецификатор... Диалектика, понимаешь...


Anatoly Podgoretsky   (2004-06-09 17:17:00) [10]

GuAV ©   (09.06.04 16:39) [43]
Третье звено не обязательно база, пуская будет ООП движок


Григорьев Антон   (2004-06-09 17:02:00) [11]


> Хочу посмеятся. Где cкачать SmallTalk?


Никогда не слышал о SmallTalk'е для виндов. Он работал только под специальной ОС, которая тоже называлась SmallTalk. Все мои сведения об этом взяты из книги http://www.delphikingdom.com/asp/book.asp?BookID=63


GuAV   (2004-06-09 16:52:00) [12]


> Сие плохо ....

Виноват, исправлюсь :(

> Можете смеяться

Хочу посмеятся. Где cкачать SmallTalk?


Григорьев Антон   (2004-06-09 16:45:00) [13]


> PVOzerski ©   (09.06.04 15:43) [33]
> Предлагаю переделать под ООП сложение двух integer'ов и
> напридумывать как можно больше проблем! :^))


Можете смеяться, но ООП c этого и началось. Был такой язык - SmallTalk. Первый ОО-язык. В нём все типы, в т.ч. и целые, были объектами. И даже операторов цикла не было, потому что последовательность операторов рассматривалась как объект, и у этого объекта были методы повторения. Кстати, все методы были виртуальными. Это уже позже люди додумались, что методы могут быть статическими, а ООП совместимо с императивным программированием.


Algol   (2004-06-09 16:44:00) [14]


> type TCalcProc=procedure(var A: array of  Integer);


Сие плохо ....


GuAV   (2004-06-09 16:39:00) [15]


> Клиент - сервер приложений - база данных

Спасибо. Я просто с БД вообще не знаком.


Anatoly Podgoretsky   (2004-06-09 16:33:00) [16]

Клиент - сервер приложений - база данных


GuAV   (2004-06-09 16:26:00) [17]


> И в трехзвенной архитектуре

а это как?


Anatoly Podgoretsky   (2004-06-09 16:22:00) [18]

И в трехзвенной архитектуре


GuAV   (2004-06-09 16:18:00) [19]


> Я по адресу! :))))

Разумеется переменную класса бит следует передавать по адресуа не по значению. Это же ООП :)


Weber   (2004-06-09 16:09:00) [20]


> разумеется бит - тоже класс :)

О боже, сумасшедший дом! ... Я по адресу! :))))


Страницы:   1 2 3

Наверх

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