Показать сообщение отдельно
  #10  
Старый 13.09.2012, 06:19
kemerovo_man kemerovo_man вне форума
Прохожий
 
Регистрация: 06.09.2012
Сообщения: 8
Репутация: 10
По умолчанию

В продолжение темы возник вопрос...

Допустим, у меня есть класс TParent с какими-то общими свойствами и методами и есть куча классов потомков типа TChild1,TChild2,..,TChild20

Код:
type
 TParent = class 
 parentProperty:string;
 procedure initParent;
end;

type
 TChild1 = class(TParent) 
 child1Property:string;
 procedure initChild;
end;

type
 TChild2 = class(TParent) 
 child2Property:string;
 procedure initChild;
end;

//.....

type
 TChild20 = class(TParent) 
 child20Property:string;
 procedure initChild;
end;

допустим, есть ObjectList в который я добавил все экземпляры дочерних классов.

теперь я обращаюсь к i-му элементу ObjectList

Код:
var Obj:TParent;
//...
Obj:=ObjectList[i];
//я могу легко вызвать метод parentInit;
Obj.parentInit;
//но, чтобы вызвать метод childInit, мне уже приходиться делать тупо
if Obj.className='TChild1' then (Obj as TChild1).initChild;
if Obj.className='TChild2' then (Obj as TChild2).initChild;
//...
if Obj.className='TChild20' then (Obj as TChild20).initChild;

Вопрос: как это делать красивее?
Ответить с цитированием