Форум: "Потрепаться";
Текущий архив: 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