Базы данных Oracle - статьи



             

Наследование


Наследование типов (Type inheritance) – это фундаментальная концепция в любой объектно-ориентированной системе. Наследование типов позволяет совместно использовать похожие свойства различных типов, а также расширять их характеристики.

Во многих объектно-ориентированных приложениях объекты организованы в типы, а типы – в иерархии типов. Эмпирически вполне достаточно организовать иерархии типов в виде набора деревьев. Тем самым, простого наследования достаточно для поддержки организации типов в большинстве приложений. Java – это объектно-ориентированный язык программирования, поддерживающий простое наследование. С помощью простого наследования тип может расширять один супертип (наследовать от одного супертипа). Такой тип, называемый подтипом (subtype), наследует все атрибуты и методы своего супертипа (supertype). Подтипу можно также добавлять новые атрибуты и методы или переопределять унаследованные методы. СУБД Oracle поддерживает модель простого наследования. А это очень близко соответствует стандарту ANSI SQL:99. (Прим. ред. Этот стандарт ANSI принят одновременно с официальным международным стандартом ISO/IEC SQL:1999 и тождественен ему.) В следующих нескольких разделах поддержка наследования типов в Oracle обсуждается более подробно.

Иерархия типов

Корневой тип иерархии создается с помощью оператора CREATE TYPE, в котором должен быть указано ключевое слово NOT FINAL (нетерминальный).

CREATE TYPE Person_t AS OBJECT( name VARCHAR2(100), dob DATE, MEMBER FUNCTION age() RETURN number, MEMBER FUNCTION print() RETURN varchar2) NOT FINAL;

Под нетерминальным типом может быть создан подтип. Он наследует все атрибуты и методы от своего супертипа. В нем можно добавить новые атрибуты и методы и/или переопределить унаследованные методы.

CREATE TYPE Employee_t UNDER Person_t( salary NUMBER, bonus NUMBER, MEMBER FUNCTION wages() RETURN number, OVERRIDING MEMBER FUNCTION print() RETURN varchar2);

В Oracle Common Schema имеется более сложный пример иерархии наследования типов. Как показано на рис. 1, класс Category и его подклассы моделируются элегантной, но простой конструкцией, представляющей иерархии "часть-целое" (part-whole) с древовидной структурой. Этот пример более детально раскрывает основные преимущества системы объектных типов Oracle9i при сохранении всех аспектов объектной модели приложения.




Содержание  Назад  Вперед