Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
Ш-К   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.032 c
8-1078568613
Pat
2004-03-06 13:23
2004.05.23
Сжатие звука по G723.1


14-1083402848
Profi
2004-05-01 13:14
2004.05.23
Русская Ось


9-1073499972
ork
2004-01-07 21:26
2004.05.23
Текстовая RPG


4-1081006648
Kor@l
2004-04-03 19:37
2004.05.23
Удаление


1-1083938793
Cfytr
2004-05-07 18:06
2004.05.23
Папка Temp и папка, где находитсяя сам exe файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский