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