Главная страница
    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
14-1096310610
lipskiy
2004-09-27 22:43
2004.10.17
Ё-маё! да что ж за фигня такая! ну подскажите же что неверно?


3-1095764757
stud
2004-09-21 15:05
2004.10.17
вопрос по событиям в interbase


3-1094180249
Новенький
2004-09-03 06:57
2004.10.17
Поиск по базе


3-1095329332
1008
2004-09-16 14:08
2004.10.17
Как ускорить вывод данных?


3-1095850830
NewDelpher
2004-09-22 15:00
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский