22.1. Связь
объектно-ориентированных СУБД с
общими понятиями
объектно-ориентированного подхода
В наиболее общей и классической
постановке
объектно-ориентированный подход
базируется на следующих
концепциях:
- объекта и идентификатора
объекта;
- атрибутов и методов;
- классов;
- иерархии и наследования
классов.
Любая сущность реального мира в
объектно-ориентированных языках и
системах моделируется в виде
объекта. Любой объект при своем
создании получает генерируемый
системой уникальный идентификатор,
который связан с объектом все время
его существования и не меняется при
изменении состояния объекта.
Каждый объект имеет состояние и
поведение. Состояние объекта -
набор значений его атрибутов.
Поведение объекта - набор методов
(программный код), оперирующих над
состоянием объекта. Значение
атрибута объекта - это тоже
некоторый объект или множество
объектов. Состояние и поведение
объекта инкапсулированы в объекте;
взаимодействие объектов
производится на основе передачи
сообщений и выполнении
соответствующих методов.
Множество объектов с одним и тем
же набором атрибутов и методов
образует класс объектов. Объект
должен принадлежать только одному
классу (если не учитывать
возможности наследования).
Допускается наличие примитивных
предопределенных классов,
объекты-экземпляры которых не
имеют атрибутов: целые, строки и т.д.
Класс, объекты которого могут
служить значениями атрибута
объектов другого класса,
называется доменом этого атрибута.
Допускается порождение нового
класса на основе уже существующего
класса - наследование. В этом случае
новый класс, называемый подклассом
существующего класса (суперкласса),
наследует все атрибуты и методы
суперкласса. В подклассе, кроме
того, могут быть определены
дополнительные атрибуты и методы.
Различаются случаи простого и
множественного наследования. В
первом случае подкласс может
определяться только на основе
одного суперкласса, во втором
случае суперклассов может быть
несколько. Если в языке или системе
поддерживается единичное
наследование классов, набор
классов образует древовидную
иерархию. При поддержании
множественного наследования
классы связаны в ориентированный
граф с корнем, называемый решеткой
классов. Объект подкласса
считается принадлежащим любому
суперклассу этого класса.
Одной из более поздних идей
объектно-ориентированного подхода
является идея возможного
переопределения атрибутов и
методов суперкласса в подклассе
(перегрузки методов). Эта
возможность увеличивает гибкость,
но порождает дополнительную
проблему: при компиляции
объектно-ориентированной
программы могут быть неизвестны
структура и программный код
методов объекта, хотя его класс (в
общем случае - суперкласс) известен.
Для разрешения этой проблемы
применяется так называемый метод
позднего связывания, означающий, по
сути дела, интерпретационный режим
выполнения программы с
распознаванием деталей реализации
объекта во время выполнения
посылки сообщения к нему. Введение
некоторых ограничений на способ
определения подклассов позволяет
добиться эффективной реализации
без потребностей в интерпретации.
Как видно, при таком наборе
базовых понятий, если не принимать
во внимание возможности
наследования классов и
соответствующие проблемы,
объектно-ориентированный подход
очень близок к подходу языков
программирования с абстрактными
(или произвольными) типами данных.
С другой стороны, если
абстрагироваться от
поведенческого аспекта объектов,
объектно-ориентированный подход
весьма близок к подходу
семантического моделирования
данных (даже и по терминологии).
Фундаментальные абстракции,
лежащие в основе семантических
моделей, неявно используются и в
объектно-ориентированном подходе.
На абстракции агрегации
основывается построение сложных
объектов, значениями атрибутов
которых могут быть другие объекты.
Абстракция группирования - основа
формирования классов объектов. На
абстракциях
специализации/обобщения основано
построение иерархии или решетки
классов.
Видимо, наиболее важным новым
качеством ООБД, которого позволяет
достичь объектно-ориентированный
подход, является поведенческий
аспект объектов. В прикладных
информационных системах,
основывавшихся на БД с
традиционной организацией (вплоть
до тех, которые базировались на
семантических моделях данных),
существовал принципиальный разрыв
между структурной и поведенческой
частями. Структурная часть системы
поддерживалась всем аппаратом БД,
ее можно было моделировать,
верифицировать и т.д., а
поведенческая часть создавалась
изолированно. В частности,
отсутствовали формальный аппарат и
системная поддержка совместного
моделирования и гарантирования
согласованности этих структурной
(статической) и поведенческой
(динамической) частей. В среде ООБД
проектирование, разработка и
сопровождение прикладной системы
становится процессом, в котором
интегрируются структурный и
поведенческий аспекты. Конечно, для
этого нужны специальные языки,
позволяющие определять объекты и
создавать на их основе прикладную
систему.
Специфика применения
объектно-ориентированного подхода
для организации и управления БД
потребовала уточненного
толкования классических концепций
и некоторого их расширения. Это
определяется потребностями
долговременного хранения объектов
во внешней памяти, ассоциативного
доступа к объектам, обеспечения
согласованного состояния ООБД в
условиях мультидоступа и тому
подобных возможностей,
свойственных базам данных.
Выделяются три аспекта,
отсутствующие в традиционной
парадигме, но требующиеся в ООБД.
Первый аспект касается
потребности в средствах
спецификации знаний при
определении класса (ограничений
целостности, правил дедукции и т.п.).
Второй аспект - потребность в
механизме определения разного рода
семантических связей между
объектами вообще говоря разных
классов. Фактически это означает
требование полного
распространения на ООБД средств
семантического моделирования
данных. Потребность в
использовании абстракции
ассоциирования отмечается и в
связи с использовании ООБД в сфере
автоматизированного
проектирования и инженерии.
Наконец, третий аспект связан с
пересмотром понятия класса. В
контексте ООБД оказывается более
удобным рассматривать класс как
множество объектов данного типа,
т.е. одновременно поддерживать
понятия и типа и класса объектов.
Как мы отмечали во введении, в
сообществе исследователей ООБД и
разработчиков систем отсутствует
полное согласие, но в большинстве
практических работ используется
некоторое расширение
объектно-ориентированного подхода.
Предыдущая
глава || Оглавление
|| Следующая глава
|