Ключевое слово ИНТЕРФЕЙС
1. Объявление интерфейсов
Для объявления интерфейсов ключевое слово ИНТЕРФЕЙС используется вне объявления типа и тела функции или метода.
Интерфейс - это абстрактный тип, расширяющий возможности использования объектных типов. Подробнее о совместном использовании интерфейсов и объектов см. здесь.
Синтаксис:
ИНТЕРФЕЙС <имя типа> [(<список базовых интерфейсов>)] [ <объявления методов интерфейса> ]
Пример:
ИНТЕРФЕЙС И_Заголовок [ ФУНКЦИЯ СТРОКА: Заголовок; ФУНКЦИЯ ЛОГИКА: Переименовать(СТРОКА: текст); ] ИНТЕРФЕЙС И_ЭлементТаблицы [ ФУНКЦИЯ СТРОКА: Текст; ФУНКЦИЯ ЦВЕТ: ЦветТекста; ФУНКЦИЯ ЦВЕТ: ЦветФона; ] ИНТЕРФЕЙС И_ЗаголовокСтолбца(И_Заголовок, И_ЭлементТаблицы) [ ФУНКЦИЯ ЧИСЛО: Ширина; ФУНКЦИЯ ИзменитьШирину(ЧИСЛО: ширина); ]
2. Запрос интерфейса
Для запроса интерфейса ключевое слово ИНТЕРФЕЙС используется в выражениях.
Синтаксис:
ИНТЕРФЕЙС(<выражение>, <имя интерфейса>)
- <выражение>
- Определяет исходный интерфейс, через который выполняется запрос.
- <имя интерфейса>
- Задает тип целевого интерфейса. Значение этого типа является результатом запроса.
Возвращаемое значение:
Всегда возвращает значение, запрашиваемого типа интерфейса. Значение целевого интерфейса может быть нулевым, если:
- значение исходного интерфейса нулевое;
- объект, реализующий исходный интерфейс, не реализует целевой интерфейс.
Использование ключевого слова ИНТЕРФЕЙС для тривиального преобразования от производного интерфейса к базовому считается ошибкой.
Пример:
ПЕРЕМ КНОПКА: кнопка // реализует И_ЭЛЕМЕНТ ПЕРЕМ РЕДАКТОР: редактор // реализует И_ЭЛЕМЕНТ, И_ПОЛЕ_ВВОДА ПЕРЕМ И_ЭЛЕМЕНТ: эл1 = кнопка ПЕРЕМ И_ЭЛЕМЕНТ: эл2 = редактор ПЕРЕМ И_ПОЛЕ_ВВОДА: поле1 = ИНТЕРФЕЙС(эл1, И_ПОЛЕ_ВВОДА) // НОЛЬ ПЕРЕМ И_ПОЛЕ_ВВОДА: поле2 = ИНТЕРФЕЙС(эл2, И_ПОЛЕ_ВВОДА) // ссылка на "редактор"