Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Описание интерфейса

Атрибуты доступа к элементам объектов | Механизм вызова виртуального метода | Абстрактный виртуальный метод | Методы обработки сообщений | Понятие ссылки на метод объекта | Понятие события | Ошибки и исключительные ситуации | Классы исключительных ситуаций | В тот момент, когда управление передается на Except, в программе считается, что ошибка обработана. | Для возврата по try используется стек вызова процедур. |


Читайте также:
  1. B.1.2. Перечень и описание вспомогательных активов
  2. Job Descriptions Описание работы
  3. Job Descriptions: Описание работы
  4. Ultimate MK3 Универсальное описание добиваний для всех версий игры .
  5. Агрегатное описание систем
  6. Аннотированное описание содержания разделов и тем дисциплины
  7. АРХИТЕКТУРА СИСТЕМНОГО ИНТЕРФЕЙСА СОВРЕМЕННЫХ ПК. НАЗНАЧЕНИЕ КОМПОНЕНТОВ. РЕЖИМЫ ПЕРЕДАЧИ ИНФОРМАЦИИ ПО системными шинами.

По форме объявления интерфейсы похожи на обычные классы, но в отличие от классов: интерфейсы не могут содержать поля; интерфейсы не могут содержать конструкторы и деструкторы; все атрибуты интерфейсов являются общедоступными (public); все методы интерфейсов являются абстрактными (virtual, abstract). Интерфейсам принято давать имена, начинающиеся с буквы I (от англ. Interface).

Не определив интерфейс ITextReader, невозможно разместить класс TTextReader в DLL-библиотеке и обеспечить доступ к нему из EXE-программы. Создавая DLL-библиотеку, мы с помощью оператора uses должны включить модуль ReadersUnit в проект библиотеки. Создавая EXE-программу, мы должны включить модуль ReadersUnit и в нее, чтобы воспользоваться описанием класса TTextReader. Но тогда весь программный код класса попадет внутрь EXE-файла, а это именно то, от чего мы хотим избавиться. Решение проблемы обеспечивается введением понятия интерфейса.

Type

ITextReader = interface

// Методы

procedure SetActive(const Active: Boolean);

function GetActive: Boolean;

function GetItem(Index: Integer): string;

// Свойства

property Active: Boolean read GetActive write SetActive;

property Items[Index: Integer]: string read GetItem; default;

End;

Поскольку интерфейс не может содержать поля, все его свойства отображены на его методы.

Поддержка интерфейса классом

Интерфейс бесполезен до тех пор, пока он не реализован. Реализацией интерфейса занимается класс. Если класс реализует интерфейс, то интерфейс может использоваться для доступа к объектам этого класса. При объявлении класса имя реализуемого интерфейса записывается через запятую после имени базового класса:

TTextReader = class(TObject, ITextReader)

Такая запись означает, что класс TTextReader унаследован от класса TObject и реализует интерфейс ITextReader. Класс, реализующий интерфейс, должен содержать код для всех методов интерфейса.

Методы QueryInterface, _ AddRef и _ Release, которые тоже должны быть реализованы. К счастью, вам нет необходимости ломать голову над реализацией этих методов, поскольку разработчики системы Delphi уже позаботились об этом. Стандартная реализация методов интерфейса IInterface находится в классе TInterfacedObject.

TTextReader = class(TInterfacedObject, ITextReader)

 

При наличии в интерфейсах нескольких одинаковых функций:

 

function NetxItem: String;

function IStringIterator.Next:= NextItem;

 


Дата добавления: 2015-11-16; просмотров: 54 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Приемы надежного программирования| Механизм подсчета ссылок в интерфейсах

mybiblioteka.su - 2015-2024 год. (0.006 сек.)