Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.23;
Скачать: CL | DM;

Вниз

Избыточность данных при наследовании   Найти похожие ветки 

 
MaximatorVeter ©   (2002-05-12 20:03) [0]

Класс TPines наследуется от TTrees.
В конструкторе TTrees инициализируются значения общих видовых свойств(например интенсивность укоренения=10, и т.д.). Если создать массив экземпляров класса TPines, то будет повторяться информация об значениях общих видовых свойств.
Можно ли этого избежать?


 
Бурундук   (2002-05-12 20:35) [1]

Если эти общевидовые св-ва реализаваны через глобальные переменные - то можно инициализацию таких св-в вынести в отдельную классовую процедуру

implemantation
var
TreesClassPropInitialized: Boolean = False;

class procedure TTrees.InitClassProp;
begin
if TreesClassPropInitialized then Exit;
TreesClassPropInitialized := True;
...
{Инициализация}
end;

constructor TTrees.Create(...);
begin
InitClassProp;
end;


 
MaximatorVeter ©   (2002-05-12 21:14) [2]

Т.е. если:

var
Pines: array of TPines;
begin
SetLength(Pines,3);
Pines[1]:=TPines.Create;
Pines[2]:=TPines.Create;
Pines[3]:=TPines.Create;
end;

то только первое дерево сосны будет иметь интенсивность укоренения=10, остальные=0.
Не нарушает ли это объектный подход? Указатели может использовать?
Вопрос видимо не простой!


 
Бурундук   (2002-05-12 21:25) [3]

Если ты хранишь общевидовые свойства в каждом экземпляре,
то никуда не денешься, надо инициализировать их в каждом объекте.
(В принципе, это может быть не так уж накладно).

Много у тебя таких свойств? И их количество постоянно для всех потомков TTrees или могут добавляться новые?


 
MaximatorVeter ©   (2002-05-12 21:44) [4]

У меня 30-50 деревьев на площадке. И у всех одинаковые значения общевидовых.
Глянь http://niist.ntu-kpi.kiev.ua/USP/uod.html пункт 2.1.3. Хранение параметров и значений объектов. Там есть варианты А,В и С.
Можно (если да,то как) реализовать в Delphi пункты A и B?


 
Бурундук   (2002-05-12 22:10) [5]

Есть такой вариант:
Для каждого класса создать один специальный объект типа TTreesInfo (или его потомка - так можно добавить общеклассовое свойство), хранящий общеклассовую информацию, а в каждом экземпляре хранить ссылку на него.


 
MaximatorVeter ©   (2002-05-12 22:49) [6]

Большое спасибо.
Чем по жизни занимаешься и как с тобой можно связаться.



 
Бурундук   (2002-05-12 23:02) [7]

Занимаюсь я физикой
(Измерением потенциала плазмы на токамаке Т-10 с помощью HIBP).

мой mail: reonid@yahoo.com



Страницы: 1 вся ветка

Текущий архив: 2002.05.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
1-73199
MisterBin
2002-05-14 15:57
2002.05.23
HINT другим цветом


14-73390
Anatoly Podgoretsky
2002-04-16 18:31
2002.05.23
Чат


1-73117
JC
2002-05-07 21:11
2002.05.23
Где можно найти, что-то типа


3-73007
vopros
2002-04-25 16:47
2002.05.23
Запрос. Помогите.


1-73265
djdfy
2002-05-08 21:21
2002.05.23
курсор в TRichEdit