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

Вниз

Посоветуйте где можно прочитать об...   Найти похожие ветки 

 
VID ©   (2004-11-06 20:00) [0]

интерфейсах в дельфи ? Так что бы подробно было описано, с примерами...


 
default ©   (2004-11-06 20:04) [1]

ну по COM отличная книга Роджерса
там можно прочитать про интерфейсы(на си правда, но я его не знаю, но смысл и так ясен)
потом полистать исходники дельфи и попрактиковаться


 
VID ©   (2004-11-06 20:08) [2]

не, не... я имел ввиду, в инете, есть какие-нибудь материалы по сабжу ?


 
VID ©   (2004-11-06 20:09) [3]

Больше интересует именно про интерфейсы чем о COM-объектах и COM-серверах. О них у меня в книге много понаписано...


 
default ©   (2004-11-06 20:12) [4]

так эта книга есть в нете
и там про интерфейсы есть, с картинками "что как работает"


 
vuk ©   (2004-11-06 22:48) [5]

to VID © (06.11.04 20:09) [3]:
Я нигде не видел толком расписаной информации по интерфейсам, особенно в отрыве от COM. Сам, помнится, хотел статью написать по этому делу, даже начал было, но времени нет, да и писатель из меня... Вы все-таки попробуйте вопросы позадавать. Может помогу чем... Хотя, конечно, Роджерсона почитать стоит в любом случае.


 
VID ©   (2004-11-06 23:05) [6]

vuk ©   (06.11.04 22:48) [5]
Да вот в том-то и дело, что прежде чем задавать вопросы, они должны из-за чего-то возникнуть. Тупые вопросы задавать тоже как-то не хочется. Начал читать про интерфейсы в книге "Программирование в Delphi5" П. Дарахвелидзе, Е.Марков, О.Котёнок - но там буквально два слова чистой теории об интерфейсах а потом вовсю расписываются COM-средства.


 
vuk ©   (2004-11-06 23:09) [7]

to VID ©   (06.11.04 23:05) [6]:
>прежде чем задавать вопросы, они должны
>из-за чего-то возникнуть
Ну так обычно из практики и возникают... Так что здесь все просто - взять класс, прикрутить к нему интерфейсы, попинать это дело... Посмотреть, где может пригодиться...


 
Игорь Шевченко ©   (2004-11-06 23:19) [8]

Немало информации об интерфейсах есть в книге Елмановой, Трепалина и Тенцера - "Delphi и технология СОМ". Применительно к Delphi и как безотносительно СОМ, так и относясь к СОМ, интерфейсы описаны у Тейксейры и Пачеко "Delphi 5, руководство разработчика".


 
iZEN ©   (2004-11-07 00:12) [9]

"Разработка COM-приложений в среде Delphi"
Автор: Эрик Хармон
Издательство: Вильямс
Объём: 464 стр.
Год издания: 2000 г.
ISBN: 5-8459-0074-3
http://www.williamspublishing.com/Books/X_DelphiCOM.html


 
vecna ©   (2004-11-07 00:44) [10]

А че про них читать-то?
Интерфейс отличается от класса:
1. нельзя создать экземпляр интерфейса, а все методы - абстрактные и виртуальные
2. нет директив public, private, protected (то есть все public)
3. нельзя использовать свойства (переменные)

все остальное: IUnknown, inteface + F1 =)


 
vuk ©   (2004-11-07 00:56) [11]

to vecna ©   (07.11.04 00:44) [10]:
>все методы - абстрактные и виртуальные
Само по себе описание интерфейса не содержит никаких методов. Методы содержатся в классе, который интерфейс реализует. А уж там эти методы могут быть любыми, статическими виртуальными или какими угодно. Единственное ограничение - calling conversion должно совпадать.

>3. нельзя использовать свойства (переменные)
Малость неверно. Свойства использовать можно, но для них можно указывать в качестве аксессоров только методы.

Есть также некоторые тонкости с интерфейсами, которые в книгах про COM не найти. В частности это касается RTTI.


 
vecna ©   (2004-11-07 01:06) [12]

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

насчет свойств я имел ввиду не property, а свойста в классичском понимании ООП - переменные:

type
 Interf = interface
   Val1 : integer;
 end;


 
Игорь Шевченко ©   (2004-11-07 01:09) [13]

vecna ©   (07.11.04 01:06) [12]


> наиболее близкий из доступных аналогов - виртуальная асбстрактная
> функция


Наиболее близкий из доступных аналогов - это просто поименованный набор виртуальных методов.


 
vuk ©   (2004-11-07 01:13) [14]

to vecna ©   (07.11.04 01:06) [12]:
>наиболее близкий из доступных аналогов - виртуальная
>асбстрактная функция
Вообще говоря, источник происхождения этого аналога - язык C++, где нет встроенной поддержки интерфейсов, и поэтому они описываются через чисто виртуальные классы. Но если есть встроенная поддержка интерфейсов, зачем использовать ненужные аналоги? :o)


 
default ©   (2004-11-07 01:16) [15]

vuk ©   (07.11.04 01:13) [14]
". Единственное ограничение - calling conversion должно совпадать."
забыли ещё порядок следования методом - это одно из самых главных иначе всей технологии кирдык


 
vuk ©   (2004-11-07 01:18) [16]

to default ©   (07.11.04 01:16) [15]:
>забыли ещё порядок следования методом
Порядок следования методов в определении класса - пофиг. Компилятор Delphi все равно генерирует таблицы интерфейсов правильно.


 
Cobalt ©   (2004-11-07 01:19) [17]

2 IZEN ©   (07.11.04 00:12) [9]
http://www.ozon.ru/?context=detail&id=99420&partner=williams&isbn=5-8459-0074-3
> Нет в наличии. Мы обязательно сообщим Вам, когда товар появится в продаже


 
default ©   (2004-11-07 01:22) [18]

vuk ©   (07.11.04 01:18) [16]
в классе то конечно, я имею ввиду в объявлении интерфейса
на крайняк если у компилятора Delphi есть описание интерфейса и класса он ещё может состыковать всё(в теории), а если какая-нибудь API возвращает ссылку на интерфейс то обязательно нужно знать по какому смещению адрес нужного метода находится чтобы его вызвать


 
vecna ©   (2004-11-07 01:24) [19]

Ых, вам бы только к словам придраться! =)

2Игорь Шевченко
найдите три отличия между вашим высказыванием и моим ? я вижу одно - я упомянул про абстрактную... при реализации интерфейса нужно реализовывать все методы - очень напоминает абстрактные.
виртуальный метод в классе все-таки надо определять.

2vuk
не спорю, я просто сравнил класс и интерфейс. когда наглядно - тогда понятно... по рабоче-крестьянски так сказать... =)

но все понял, и спорить больше не буду. ;)


 
iZEN ©   (2004-11-07 01:35) [20]

Интерфейс - это сигнатура.


 
vuk ©   (2004-11-07 01:46) [21]

to iZEN ©   (07.11.04 01:35) [20]:
Если уж на то пошло, то скорее роль или контракт.


 
Григорьев Антон ©   (2004-11-07 09:00) [22]


> vecna ©   (07.11.04 00:44) [10]
> А че про них читать-то?
> Интерфейс отличается от класса:
> 1. нельзя создать экземпляр интерфейса, а все методы - абстрактные
> и виртуальные
> 2. нет директив public, private, protected (то есть все
> public)
> 3. нельзя использовать свойства (переменные)
>
> все остальное: IUnknown, inteface + F1 =)


Это в С++ так, но не в Delphi. Дельфийские интерфейсы отличаются ещё и тем, что компилятор сам контролирует их ссылки, подерживает приведение типов через неявный вызов QueryInterface, допускает множественное наследование. Так что в Дельфи интерфейс - это всё-таки не частный случай класса.



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

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

Наверх




Память: 0.5 MB
Время: 0.043 c
1-1099758887
Павел
2004-11-06 19:34
2004.11.21
компонент наподобии TPageControl


14-1099307045
Holy
2004-11-01 14:04
2004.11.21
Посоветуйте CVS...


1-1099480526
Змей
2004-11-03 14:15
2004.11.21
Рус->Eng Tng->Рус


1-1099640046
Topepo
2004-11-05 10:34
2004.11.21
Помогите с тестовой оболочкой, плииз!


6-1095250493
Луарвик
2004-09-15 16:14
2004.11.21
А как заполнить поля в IE?





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