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/ |