Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Множественное наследование? [D7, WinXP]


misha123 ©   (2004-09-28 13:16:00) 

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

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

Спасибо.


DiamondShark   (2004-09-30 12:12:00) [1]


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

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

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


Cobalt   (2004-09-30 11:36:00) [2]

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


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


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

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


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

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


Cobalt   (2004-09-29 23:14:00) [5]

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


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

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

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

Спасибо.


TUser   (2004-09-28 16:05:00) [7]

Буду знать


Amoeba   (2004-09-28 15:14:00) [8]


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

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


TUser   (2004-09-28 14:56:00) [9]


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

WideString


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

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


TUser   (2004-09-28 14:30:00) [11]

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

:)


DiamondShark   (2004-09-28 14:15:00) [12]

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

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

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

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


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

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


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

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


Amoeba   (2004-09-28 13:42:00) [15]


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

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


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

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

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


serge   (2004-09-28 13:27:00) [17]

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


DiamondShark   (2004-09-28 13:22:00) [18]


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

Агрегацией.

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


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

Perehoditi na C++ :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо