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

Вниз

Множественное наследование?   Найти похожие ветки 

 
misha123   (2004-09-28 13:16) [0]

Доброго дня, еще раз :)

Теоретический вопрос - если я например хочу сделать компонент, который унаследуется от, например Tcombobox и TCaption (т.е. что-то похожее на labelededit) - то я должен наследовать свой класс от этих двух классов? Так понятное дело нельзя - шаманство :) Но как тогда реализовывать подобные штучки?

Спасибо.


 
serge ©   (2004-09-28 13:19) [1]

Perehoditi na C++ :)


 
DiamondShark ©   (2004-09-28 13:22) [2]


> Но как тогда реализовывать подобные штучки?

Агрегацией.

А МН тут вообще не при делах.


 
serge ©   (2004-09-28 13:27) [3]

Look at the sources of "что-то похожее на labelededit"


 
Apl   (2004-09-28 13:31) [4]

разработчики VCl решили эту проблему введя в классы поля других типов, например

TMyClass=class(TControl)
FLabel:TLabel;
FPanel:TPanel;
...


 
Amoeba ©   (2004-09-28 13:42) [5]


> DiamondShark ©   (28.09.04 13:22) [2]

Полностью согласен, что задача не имеет никакого отношения к множественному наследованию.


 
Lin7   (2004-09-28 13:43) [6]

Если уж хочется множественное наследование - можешь в Delphi реализовать его с помощью интерфейсов, но в твоём случае лучше агрегация.


 
Amoeba ©   (2004-09-28 13:51) [7]

Можно и с помощью интерфейсов, только это будет удаление гланд через одно известное место...


 
DiamondShark ©   (2004-09-28 14:15) [8]

Вот ведь каша какая в головах.

МН (и, как более общий случай, реализация интерфейсов) используется, когда объект реализует несколько (логически различных) програмных сервисов.

К визуальному поведению графического контрола МН не имеет абсолютно никакого отношения.

Сложные контролы как в дельфи (grid+inplace edit в стандарном наборе, button edit в RX), так и в Windows (combo, list view) прекрасно обходятся без всякого множественного наследования.


 
TUser ©   (2004-09-28 14:30) [9]

Я, кстати, почему-то ни разу не видел классов, унаследованных от TCaption. Пусть не множественно, пусть хоть как-нибудь

:)


 
Amoeba ©   (2004-09-28 14:48) [10]

Сложно наследовать от TCaption когда это всего лишь тип, а не класс.
type TCaption = string;


 
TUser ©   (2004-09-28 14:56) [11]


> Amoeba ©   (28.09.04 14:48) [10]

WideString


 
Amoeba ©   (2004-09-28 15:14) [12]


> TUser ©   (28.09.04 14:56) [11]
>
> > Amoeba ©   (28.09.04 14:48) [10]
>
> WideString

А это смотря в какой версии Delphi. В D5 - string.


 
TUser ©   (2004-09-28 16:05) [13]

Буду знать


 
misha123   (2004-09-29 18:05) [14]

ВОПРОС был ТЕОРЕТИЧЕСКИЙ! :)
Множественное наследование (я кстати не считаю это правильным) - не панацея, я только предположил... :)
И кстати визуальный компонент я привел только (!) в качестве примера.

Что значит агрегация? (хотя бы кратко)

Спасибо.


 
Cobalt ©   (2004-09-29 23:14) [15]

2 misha123   (29.09.04 18:05) [14]
Агрегация - это когда для исполнения некоторого функционала заводится поле - класс, исполняющий этот функционал.


 
misha123   (2004-09-30 11:12) [16]

спасибо, понял


 
Суслик ©   (2004-09-30 11:14) [17]


>  [15] Cobalt ©   (29.09.04 23:14)

Чем агрегация от композиции отличается.


 
Cobalt ©   (2004-09-30 11:36) [18]

2 Суслик ©   (30.09.04 11:14) [17]
Пока что понятия не имею. Когда столкнусь - скажу ;)


 
DiamondShark ©   (2004-09-30 12:12) [19]


> Суслик ©   (30.09.04 11:14) [17]
> Чем агрегация от композиции отличается.

Тем, что при агрегации програмные сервисы, предоставляемые внутренними объектами делаются доступными извне, как если бы это были сервисы самого агрегата.

Так что в примере со сложным контролом его правильнее назвать композитом, а не агрегатом.



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

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

Наверх




Память: 0.48 MB
Время: 0.024 c
1-1096550104
M-Alex
2004-09-30 17:15
2004.10.17
Edit


3-1095757017
xandrews
2004-09-21 12:56
2004.10.17
Update в Select - висит


8-1090389409
Игорь Н.
2004-07-21 09:56
2004.10.17
Как засунуть .bmp внутрь .exe шника?


9-1086894437
Огромное Кулясище
2004-06-10 23:07
2004.10.17
Странная видеокарта....


8-1090497126
Snip
2004-07-22 15:52
2004.10.17
Thumbnails и TListView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский