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

Вниз

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

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

Наверх




Память: 0.48 MB
Время: 0.037 c
1-1096299900
Руслана
2004-09-27 19:45
2004.10.17
Подскажите пожалуйста как преобразовать массив байт


1-1096880871
}|{yk
2004-10-04 13:07
2004.10.17
CharToOem и Cp866-U


1-1096548492
bs
2004-09-30 16:48
2004.10.17
Сохранение данных из поля memo в текстовый файл


14-1095841078
Unknown_User
2004-09-22 12:17
2004.10.17
Поймали, что делать??


1-1096150607
Homa_Programer
2004-09-26 02:16
2004.10.17
Кнопочка





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