Можно ли абстактные методы типа описывать "только для реализации"? Ожидаемый эффект - замена наследования хранимых в контейнере данных от общего базового типа данных, с которым умеет работать контейнер (в целях типизации) наследованием контейнера, уже умеющего работать с конкретным типом данных от базового контейнера, отвязанного от типа хранимых в нем данных, и предоставляющего только функциональность самого контейнера (сортировка, удаление, вставка и т.д.). Работа с типом хранимых данных реализуется в типе-наследнике через реализацию метода базового контейнера. Эта процедура описывается только для реализации и используется в контейнере-родителе в базовых методах. Реализуется процедура в контейнере-приемнике.
Пример:
Код:
TYPE
ContainerNode* = POINTER TO RECORD
data: ANYPTR;
next: ContainerNode;
END;
Container* = POINTER TO ABSTRACT RECORD
head: ContainerNode;
END;
(* реализация методов работы с элементами контейнера, общих для всех типов наследников - добавление, удаление,
сортировка и т.д.*)
(*работу с конкретными хранимыми данными предлагается реализовать в модуле-клиенте переопределением
этого метода*)
PROCEDURE (this: Container) CreateNode-(data: ANYPTR): ContainerNode, NEW, ABSTRACT;