Метод продолжения
Материал из Википедии — свободной энциклопедии
Концепт в концептно-ориентированном программировании (КоП) может пониматься как пространство. Это пространство имеет границу, которую должен пересечь любой запрос на доступ, направленный внутрь к под-концепту. Концепт обычно хочет перехватить запросы на доступ таких как вызовы методов или сообщения, проходящие через его границу для того, чтобы иметь возможность выполнить соответствующие промежуточные операции. Для этой цели концепт определяет пару двойственных методов продолжения, которые вызываются автоматически и перехватывают проходящие запросы на доступ.
Метод продолжения класса ссылки предназначен для разрешения данной ссылки в замещенную примитивную ссылку. Это позволяет получить прямую ссылку из косвенной (непрямой) ссылки. Прямая примитивная ссылка может затем использоваться для доступа к представляемому объекту. Идея состоит в том, что программист определяет соответствующий формат ссылки в классе ссылки и затем пишет процедуру разрешения с помощью метода продолжения.
Следующий фрагмент кода дает пример реализации метода продолжения:
concept Account reference { String accountNumber; // Идентификатор void continue() { print("> Account: Начать разрешение "); Object o = resolve(accountNumber); o.continue(); print("< Account: Закончить разрешение"); } } object { ... }
В этом примере метод продолжения класса ссылки печатает два сообщения до того, как он начнет разрешение ссылки, а также после того, как он закончит разрешение. Само разрешение реализовано в методе resolve()
, реализованном где-то в этом или родительском концепте. Затем он применяет метод продолжения к только что разрешенной примитивной ссылке o
: o.continue()
. Поскольку это примитивная ссылка, компилятор считает, что это прямое представление объекта и вызывает следующий метод в последовательности доступа.
[править] См. также
- Концептно-ориентированное программирование
- Концепт
- Включение
- Комплексная ссылка
- Метод продолжения
- Двойственные методы
- Концептно-ориентированная модель