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

Вниз

Интерфейсы   Найти похожие ветки 

 
Всеволод Соловьёв   (2003-08-14 10:34) [0]

Для чего они нужны? Как их использовать? В хелпе я ничего полезного не нашел :( Хотелось бы или увидеть ссылки, где можно прочитать, или услышать разъяснения.
ЗЫ это те интерфейсы, которые IDsdsa = interface(IUnknown);


 
wl   (2003-08-14 11:02) [1]

Эти интерфейсы придумала фирма MicroSoft для того, чтобы можно было использовать программы, написанные на одном языке программирования, и оформленные в виде COM/ActiveX-объектов, в программах на других языках, поддерживающих технологию COM. Например, ActiveX-компоненты, написанные на Visual Basic, в программе на Delphi. Искать надо соотетственно в MSDN по слову COM.


 
HolACost!   (2003-08-14 11:06) [2]

А может есть какая-нить литература (не к рихтеру - или ссылку на него для полной комплекции)! Но желательно чтобы было написано как для ламеров!


 
wl   (2003-08-14 11:17) [3]

2HolACost!
http://delphiplus.nagano.ru/downloads/doc/delphi5/d5_dev_guide2.zip

Там есть какая-то инфа по COM-технологии. Сам ещё не читал, с утра скачал только, если очень интересно, посмотри


 
HolACost!   (2003-08-14 11:19) [4]

Ну ето у меня есть в бумажном варианте, но там как-то непочеловечески - сразу в интерфейсы да и на голых примерах!


 
wl   (2003-08-14 11:32) [5]

Ну тогда, может в FAQ на этом сайте?


 
vuk   (2003-08-14 11:33) [6]

Вообще говоря рассказывать можно долго, но главное назначение интерфейсов - отделение объектного интерфейса от кода, реализующего интерфейс.

Объектный интерфейс - именованый набор свойств и методов, не содержащий реализации этих свойств и методов. Таким образом, интерфейсы можно рассматривать как полностью абстрактные описания классов (чисто виртуальные классы в терминологии C++). То есть любой интерфейс - это некая сущность, которая определяет с чем мы можем работать, но не определяет как.

В объектных моделях с интерфейсами каждый объект может поддерживать (предоставлять, реализовывать) несколько интерфейсов. Любой из интерфейсов, поддерживаемых объектом может быть запрошен у этого объекта и использован. Таким образом объект представляет из себя набор предоставляемых интерфейсов.

Из языков программирования такие объектные модели есть в Java и Object Pascal, C#. Также модели с поддержкой интерфейсов используются в таких, как технологиях COM, .NET и CORBA.

Модель поддержки интерфейсов в Object Pascal частично была скопирована из технологии COM. Изначально это было сделано для упрощения поддержки технологии COM, поэтому многие черты схожи. Это касается имени базового интерфейса, способа идентификации интерфейсов при их запросе а также методов базового интерфейса.

В Object Pascal каждый класс имеет одного предка и может реализовывать несколько интерфейсов. Как и классы, объектные интерфейсы поддерживают наследование. У всех классов существует общий предок - TObject. Точно так же и у всех интерфейсов существует общий предок - IInterface, и если предок явно не указан, то предком является IInterface.

Интерфейс представляет собой объявление методов и свойств в том же виде, в каком они объявляются в определении класса, однако, отличие от классов, интерфейсы только декларируют свойства и методы, но не реализуют их. Поэтому, любой класс, реализующий интерфейс должен брать на себя заботу о реализации всех методов, объявленных в интерфейсе. Также в определениях интерфейсов нельзя объявлять поля данных. Таким образом, только методы могут быть указаны в качестве спецификаторов доступа (read и write) для свойств, объявленных в интерфейсе. Все методы и свойства объявленнные в интерфейсе всегда имеют спецификатор видимости public.

Объявление интерфейса похоже на объявление класса и следует почти тем же правилам. Оно должно располагаться в блоке type, только вместо ключевого слова class используется слово interface.


 
Юрий Федоров   (2003-08-14 11:58) [7]

Для лучшего понимания вот один из вариантов использования интерфейсов.
В библиотеке (DLL) некий объект, реализующий некий интерфейс.
Модуль, в котором объявлен этот интерфейс прикомпилирован как к Dll так и к Exe, а модуль с объектом-реализатором интерфейса только к DLL. Также DLL экспортирует функцию, возвращающую экземпляр этого интерфейса (в ней просто создается экземпляр объекта и возвращается указатель).
Теперь приложение, в котором нет реализации объекта может вызывать его методы через полученный экземпляр интерфейса


 
pasha_golub   (2003-08-14 12:12) [8]

2vuk
А я всегда думал, что предком всех интерфейсов есть IUnknown, IMHO


 
Всеволод Соловьёв   (2003-08-14 12:14) [9]

хмм... В общих чертах понятно...


 
Юрий Федоров   (2003-08-14 12:15) [10]

>>pasha_golub © (14.08.03 12:12) [8]

Unit System
...
type
...
IUnknown = IInterface;


 
Всеволод Соловьёв   (2003-08-14 12:16) [11]

хмм... В общих чертах понятно...


 
pasha_golub   (2003-08-14 12:28) [12]

2Юрий Федоров
Thanks :-)


 
wl   (2003-08-14 14:11) [13]

Фигня какая-то... IUnknown - предок всех интерфейсов.


 
Vuk   (2003-08-14 14:17) [14]

Начиная с D6 общим предком является IInterface. И еще в Help написано:

The declaration of an interface can specify an ancestor interface. If no ancestor is specified, the interface is a direct descendant of IInterface, which is defined in the System unit and is the ultimate ancestor of all other interfaces. IInterface declares three methods: QueryInterface, _AddRef, and _Release.

Note: IInterface is equivalent to IUnknown. You should generally use IInterface for platform independent applications and reserve the use of IUnknown for specific programs that include Windows dependencies.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.011 c
14-81924
ghost_by
2003-08-08 17:35
2003.08.25
DBGrid - несколько вопросов.


9-81527
Антон
2003-02-18 04:51
2003.08.25
Помогите кто может


1-81728
MoRT
2003-08-10 19:46
2003.08.25
Эмуляция нажатия клавиш


1-81608
muzik
2003-08-13 11:49
2003.08.25
UNICODE


1-81832
Vitalygavrilov
2003-08-13 10:50
2003.08.25
Возможно ли в QReport сделать заполнение бланка.





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