Показать сообщение отдельно
  #1  
Старый 02.06.2010, 18:41
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
Вопрос Как дублировать процедуру и поля? [ООП]

Привет всем! Возник вопрос касательно ООП.

Есть несколько классов:
Код:
TInteger3Locations = class
Location : array of Integer;
Value: array of TVector3i; 
Name:array of ^string;
procedure SetLengthFor(NewLength:Integer);
end;

TInteger4Locations = class
Location : array of Integer;
Value: array of TVector4i; 
Name:array of ^string;
procedure SetLengthFor(NewLength:Integer);
end;

TFloat1fLocations = class
Location : array of Integer;
Value: array of Single;
Name:array of ^string;
procedure SetLengthFor(NewLength:Integer);
end;

Как вы можете видеть, тут у каждого класса дублируется поле Location. Я решил проблему тем, что создал предка для этих классов и вынес Location и Name туда. Это просто и проблема не в этом.
Код:
TBaseLocations = class
Location : array of glint;
Name:array of ^string;
end;

Проблема в том, что помимо полей у этих классов дублируется ещё и процедура SetLengthFor. Вот её код:
Код:
procedure TInteger3Locations.SetLengthFor(NewLength:Integer);
var i:Integer;
begin
SetLength(Location,NewLength);
SetLength(Value,NewLength);
SetLength(Name,NewLength);
for i:=0 to NewLength-1 do begin
New(Value[i]);
New(Name[i]);
end;
end;
Как мне перенести её в класс-предок? Или как вообще назначить одну такую процедуру всем классам? Ведь у класса-предка нет поля Value. Создавать абсолютно одинаковые процедуры для трёх (в реале больше) классов - глопость, я уверен.
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием