OberonCore
https://forum.oberoncore.ru/

Метод типа только для релизации
https://forum.oberoncore.ru/viewtopic.php?f=29&t=677
Страница 1 из 1

Автор:  Андрей [ Пятница, 05 Октябрь, 2007 17:06 ]
Заголовок сообщения:  Метод типа только для релизации

Можно ли абстактные методы типа описывать "только для реализации"? Ожидаемый эффект - замена наследования хранимых в контейнере данных от общего базового типа данных, с которым умеет работать контейнер (в целях типизации) наследованием контейнера, уже умеющего работать с конкретным типом данных от базового контейнера, отвязанного от типа хранимых в нем данных, и предоставляющего только функциональность самого контейнера (сортировка, удаление, вставка и т.д.). Работа с типом хранимых данных реализуется в типе-наследнике через реализацию метода базового контейнера. Эта процедура описывается только для реализации и используется в контейнере-родителе в базовых методах. Реализуется процедура в контейнере-приемнике.
Пример:
Код:
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;

Автор:  Илья Ермаков [ Пятница, 05 Октябрь, 2007 17:15 ]
Заголовок сообщения:  Re: Метод типа только для релизации

Да, конечно, можно.
Это очень сильная штука - определили абстрактный интерфейс, который определяют клиенты, но пользоваться им можем только сами.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/