Главная страница
    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.49 MB
Время: 0.057 c
1-1096876615
cad2206
2004-10-04 11:56
2004.10.17
Сложение времени


1-1096540085
Dragon21
2004-09-30 14:28
2004.10.17
Interface


4-1094827179
Иван_
2004-09-10 18:39
2004.10.17
Что такое IRQ прерывания?


14-1096063536
Мазут Береговой
2004-09-25 02:05
2004.10.17
Нашелся советский шатл и гн знают откуда он!


3-1095770374
Nick-From
2004-09-21 16:39
2004.10.17
Вопрос по FibPlus





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