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

Вниз

Имитация множественного наследования   Найти похожие ветки 

 
Ш-К   (2004-05-07 10:27) [0]

Есть два класса:

TItem = class;
...
end;

TList = class(TItem);
FItems: array of TItem;
...
end;

Классы описывают работу с деревьями, но дело не в деревьях.
Дело вот в чем. Создаю потомков от классов.

TMyItem = class(TItem);
...
end;

TMyList = class(TList);
...
end;

TMyList ничего не знает о TMyItem, а мне надо чтобы TMyList мог наследовать функциональность и TMyItem, как это реализовано у его предка TList.

Другими словами, как на конкретном примере реализовать конструкцию:

TMyList = class(TList, TMyItem);


 
Skier ©   (2004-05-07 10:30) [1]


> Имитация множественного наследования

Имитация множественного наследования в Object Pascal возможна только через использование интерфейсов.


 
ASMiD ©   (2004-05-07 10:31) [2]

Либо я чегото недопонял, либо есть желание заставить дерево срастаться своей кроной?


 
Ш-К   (2004-05-07 10:32) [3]

Ну, я то и прошу показать на примере.


 
Skier ©   (2004-05-07 10:36) [4]

>Ш-К   (07.05.04 10:27)  
TMYItem - Это узел дерева
TMyList - Это список узлов верхнего уровня.
Так ?


 
Ш-К   (2004-05-07 10:46) [5]

Есть связка классов TItem-TList. И я хочу "наследоваться" от этой связки.

> TMYItem - Это узел дерева
> TMyList - Это список узлов верхнего уровня.
> Так ?

Именно так.


 
Skier ©   (2004-05-07 10:52) [6]

>Ш-К   (07.05.04 10:46) [5]

> Именно так.

А теперь такой вопрос (прошу над ним хорошо подумать) : зачем для решения такой задачи множественное наследование ?


 
Ш-К   (2004-05-07 11:01) [7]


> зачем для решения такой задачи множественное наследование

Я не знаю, как ещё :(
Если можно обойтись, то буду рад.
Это для моей задачи с деревьями.

А в общем, хотелось бы хоть раз увидеть, как с помощью интерфейсов сделать сабж.


 
Ш-К   (2004-05-07 11:06) [8]

Да, в дополнение к [5]
TMyList не просто список, у него еще должны быть все св-ва TMYItem.


 
Skier ©   (2004-05-07 11:09) [9]


> TMyList не просто список, у него еще должны быть все св-ва
> TMYItem.


смотри реализацию TObjectList. И делай по аналогии...


> А в общем, хотелось бы хоть раз увидеть, как с помощью интерфейсов
> сделать сабж.

интерфейсы тут совершенно не нужны...


 
Goida ©   (2004-05-07 11:12) [10]

У тебя есть TItem. У тебя должен быть TList, который должен быть оболочкой для TItem, а не наследоваться от него. У тебя эти классы делают совершенно разную работу.


 
Ш-К   (2004-05-07 11:24) [11]

Наверно, внесло путаницу названия базовых классов. Ничего общего с Classes.TList

Прошу прощения, с деревьями тема закрыта. Это не деревья. Всё.
Сделал TMyItem = class(TList)

Skier ©   (07.05.04 10:30) [1]

> > Имитация множественного наследования
>
> Имитация множественного наследования в Object Pascal возможна
> только через использование интерфейсов.


Skier ©   (07.05.04 11:09) [9]

> > А в общем, хотелось бы хоть раз увидеть, как с помощью
> интерфейсов
> > сделать сабж.
>
> интерфейсы тут совершенно не нужны...


 
Goida ©   (2004-05-07 11:35) [12]


> Ш-К  


> Сделал TMyItem = class(TList)

Ты не правильно сделал... Хотя хозяин - барин...


 
malkolinge ©   (2004-05-07 12:01) [13]


> > Имитация множественного наследования


TbaseClass1=class
procedure a
end;

TbaseClass2=class
procedure b
end;

IbaseClass2 = interface
procedure b
end

TMyClass = class(TbaseClass1, IBaseClass2)
property BaseClass2:TbaseClass2 implements IBaseClass2;
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.028 c
7-1081378840
nec
2004-04-08 03:00
2004.05.23
Чтение и запись в COM-порт в Win XP/NT


3-1082909776
Mishenka
2004-04-25 20:16
2004.05.23
Переменное число полей.


14-1083157523
FlankerX
2004-04-28 17:05
2004.05.23
Microsoft vs Borland


11-1057565898
mox
2003-07-07 12:18
2004.05.23
NMSMTP


3-1082959862
wild_arg
2004-04-26 10:11
2004.05.23
Параметры в хп.