Форум: "Основная";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];
ВнизОперации с данными класса - как организовать ? Найти похожие ветки
← →
Ганна Юхимівна (2007-04-23 15:38) [0]Уважаемые Мастера !
Подскажите как лучше организовать в Delphi множество операций над данными класса.
Поясняю подробнее - есть классы с общим предком, инкапсулирующие неккоторые данные. Нужно сделать суммирование, вычитание и т.п. операции над полями класса. Аналог в C - class Complex - для работы с комплексными числами.
Но поскольку перегрузки операторов в Delphi 7 нету - помогите выбрать лучший способ :)
Будет ли это набор функций, может функции класса или еще что-то - затрудняюсь с выбором.
← →
Reindeer Moss Eater © (2007-04-23 15:57) [1]Сделать самый обычный виртуальный метод суммирования.
← →
Джо © (2007-04-23 15:58) [2]Я бы наследовался от TInerfacedObject и реализовал нужный интерфейс. Преимущество — автоматический учет ссылок и уничтожение. Ну, и использовал бы методы, принимающие параметры того же интерфейсного типа, т.е., в духе такого
IMyComplex = interface
function Add (Another: IMyComplex): IMyComplex;
function ...
end;
Ну, в таком роде...
← →
Reindeer Moss Eater © (2007-04-23 15:59) [3]может функции класса или еще что-то - затрудняюсь с выбором.
Функция класса здесь точно лишняя. К полям экземпляра ей доступ запрещен, значит данные передавать в параметрах. А в таком случае сойдет и обычная функция.
← →
Ганна Юхимівна (2007-04-23 16:28) [4]
> Reindeer Moss Eater © (23.04.07 15:57) [1]
> Сделать самый обычный виртуальный метод суммирования.
Поясните пожалуйста...
На данном этапе это реализовано примерно так
procedure XXXSum(Return: TDailyXXX; const Items: array of TDailyXXX);
var
i, j: integer;
begin
for i := Low(Return.Values) to High(Return.Values) do begin
Return.Values[i] := 0;
for j := Low(Items) to High(Items) do begin
Return.Values[i] := Return.Values[i] + Items[j].Values[i];
end;
end;
end;
но отдельными процедурами некрасиво - хотелось бы эти функции сделать членами какого-то класса...
Джо © (23.04.07 15:58) [2]
Интерфейсы - хорошая мысль. Подумаю...
← →
Юрий Зотов © (2007-04-24 13:44) [5]type
TComplex = packed record
Re: extended;
Im: exrended
end;
function Add(X, Y: TComplex): TComplex;
begin
...
end;
И т.п.
И при чем тут объекты, интерфейсы, методы, поля и пр., если речь идет о самой обычной математике? Функцию для вычисления 2+2 тоже через объекты реализовывать будем?
Можно и так, конечно. Но возникает маленький вопрос: а при длинных цепочках вычислений, когда требуется высокое быстродействие (что в математических расчетах встречается вовсе не редко) - сколько лишнего времени сожрут накладные расходы на создание и уничтожение объектов, выделение и освобождение памяти... и пр., и пр.?
Объекты - они все же не для таких задач. Можно, конечно, забивать гвозди и вазой, но молотком - гораздо проще, быстрее и удобнее.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c