OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 18 Апрель, 2024 15:48

Часовой пояс: UTC + 3 часа




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

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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Да, конечно, можно.
Это очень сильная штука - определили абстрактный интерфейс, который определяют клиенты, но пользоваться им можем только сами.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB