Основы объектно-ориентированного программирования


Глубокое хранилище: первый взгляд на сохраняемость - часть 3


Класс IO_MEDIUM это еще один класс библиотеки Base, предназначенный для работы не только с файлами, но и для передачи данных по сети. Очевидно, f не должно быть void, а присоединенный файл или сетевое устройство должны допускать запись.

Вызов retrieved (f) возвращает структуру объектов, идентичную структуре, сохраняемой в f предыдущим вызовом store. Компонент retrieved - это функция, возвращающая в качестве результата ссылку на головной объект возвращаемой структуры объектов.

Механизм STORABLE это наш первый пример важного свойства сохраняемости (persistence) объектов. Объект сохраняем, если он продолжает существовать по окончании очередной сессии работы системы. Класс STORABLE обеспечивает только частичное решение проблемы, накладывая ряд ограничений:

  • В сохраняемой и возвращаемой структуре только один объект известен индивидуально - головной объект. Было бы желательно уметь идентифицировать и другие объекты.
  • Как следствие, механизм не позволяет выборочное получение объектов, через запросы или по ключу, как это делается, например, в базах данных.
  • Вызов retrieved воссоздает полную структуру объектов. Это означает невозможность использовать два или более таких вызовов для получения отдельных частей структуры, если только структуры не являются независимыми.

В развитие этой темы следует перейти от понятия механизма сохранения к общему понятию ОО-базы данных, подробно рассматриваемому в лекции 13 курса "Основы объектно-ориентированного проектирования". В ней обсуждаются проблемы механизмов сохранения STORABLE и другие проблемы, такие как эволюция схем и идентичность объектов сохранения.

Отмеченные выше ограничения механизма STORABLE нисколько не умаляют его практическую ценность. Хорошо известно, что отсутствие подобного механизма - одно из главных препятствий на пути широкого использования сложных структур данных в традиционном окружении. Без него хранение данных требует значительных программистских усилий: для каждого вида структуры приходится писать несколько взаимосвязанных рекурсивных процедур, реализующих операции ввода-вывода, также как и специальные механизмы обхода динамических структур данных.


- Начало -  - Назад -  - Вперед -