Оператор ABSTRACT
Оператор ABSTRACT создает абстрактное свойство.
Синтаксис
ABSTRACT [type [exclusionType] [order]] [FULL] returnClassName [(argClassName1, ..., argClassNameN)]
Описание
Оператор ABSTRACT создает абстрактное свойство. Его реализации позже добавляются инструкциями +=. В зависимости от выбранного типа платформа формирует из них поведение оператора выбора.
Оператор ABSTRACT нельзя использовать внутри выражений.
Параметры
-
typeОпция. Возможные значения:
CASE- явная условная форма абстрактного свойства. Условие выбора каждой реализации задается в соответствующей инструкции+=с помощью блокаWHEN.MULTI- полиморфная форма абстрактного свойства. Условием выбора реализации является совместимость текущих аргументов с ее сигнатурой.VALUE- полиморфная форма выбора по значению. Реализация считается подходящей, если она возвращает определенное значение, то есть значение, отличное отNULL.
Если опция не указана, по умолчанию используется
MULTI. -
exclusionTypeОпция. Задает тип взаимоисключения. Возможные значения:
EXCLUSIVE- взаимоисключающий режим для формCASE,MULTIиVALUE. В этом режиме для каждого набора аргументов должна существовать не более чем одна подходящая реализация.OVERRIDE- режим для формCASE,MULTIиVALUE, в котором одновременно могут подходить несколько реализаций.
Используется только вместе с
CASE,MULTIилиVALUE. ДляMULTIпо умолчанию используетсяEXCLUSIVE, дляCASEиVALUE-OVERRIDE. -
orderОпция для
OVERRIDE. Возможные значения:FIRST- новые реализации добавляются в начало списка, поэтому будет выбрана реализация, добавленная последней. Если послеOVERRIDEэто значение не указано, оно используется по умолчанию.LAST- новые реализации добавляются в конец списка, поэтому будет выбрана реализация, добавленная первой.
Используется только вместе с
OVERRIDE. -
FULLКлючевое слово. Если задано, платформа автоматически проверит полноту набора реализаций: для всех потомков классов аргументов должна существовать хотя бы одна подходящая реализация (или ровно одна, если условия взаимоисключающие).
-
returnClassNameКласс возвращаемого значения свойства. Идентификатор класса.
-
argClassName1, ..., argClassNameNСписок имен классов аргументов свойства. Каждое имя задается идентификатором класса. Список может быть пустым. Если список не указан, используются классы параметров свойства из объявления, в котором применяется оператор
ABSTRACT.
Примеры
CLASS Invoice;
CLASS InvoiceDetail;
CLASS Range;
CLASS Connection;
rateChargeExchange(invoice) = ABSTRACT NUMERIC[14,6] (Invoice);
defaultIsMobileMode(Connection c) = ABSTRACT BOOLEAN;
backgroundSku 'Цвет' (d) = ABSTRACT CASE FULL COLOR (InvoiceDetail);
overVAT = ABSTRACT VALUE OVERRIDE FIRST Range (InvoiceDetail);