![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ООП и arrays [D7, Win95/98, WinME, NT4, Win2k, WinXP]
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]
> разумеется бит - тоже класс :)
О боже, сумасшедший дом! ... Я по адресу! :))))