Главная страница
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.51 MB
Время: 0.04 c
1-1097053291
Belkova
2004-10-06 13:01
2004.10.17
StrToDate


1-1096976842
СержК
2004-10-05 15:47
2004.10.17
Ошибка при установке компонент


6-1091802512
Wolfram
2004-08-06 18:28
2004.10.17
Использование ICS


3-1095927489
Иванов Сергей
2004-09-23 12:18
2004.10.17
Чем пользоваться для доступа к DBF+IDX


14-1096088031
Шишкин Илья
2004-09-25 08:53
2004.10.17
Не могу установить компонент