Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Реализация объектного подхода в ORACLE




В результате широкого распространения объектно-ориентированного подхода лидеры в производстве реляционных СУБД стремятся наделить свои продукты объектно-ориентированными возможностями, чтобы повысить конкурентоспособность своих продуктов. Компания ORACLE здесь не стала исключением.

В целом объектная реализация в ORACLE традиционна для объектного подхода вообще. Строго говоря, СУБД ORACLE не является объектной. Точнее будет сказать, что в СУБД ORACLE есть объектное расширение – возможности по созданию и использованию объектов, причем возможности эти несколько ограничены по сравнению с большинством языков высокого уровня.

Ограничения, в частности, касаются слабой реализации принципа инкапсуляции (все свойства и методы объектов являются открытыми), нет возможности вызывать перегруженные методы предков и т.д. Тем не менее, объектная модель ORACLE развивается от версии к версии, и ее возможностей уже сейчас вполне достаточно для решения большинства задач методами объектно-ориентированного подхода.

 

Хранение объектов в столбцах реляционных таблиц

Например, для описания некоторого абстрактного адреса создадим тип:

 

CREATE OR REPLACE TYPE address_typ AS OBJECT(
Zip CHAR(6),

City varchar2(20),

Location VARCHAR2(50));
/

 

Примечание: объекты, как и пакеты, имеют интерфейс и реализацию. И также как и пакеты, создаются в два этапа – сначала заголовок (интерфейс), потом тело (реализация). В том случае, когда объект не содержит методов, тело объекта не указывается.

 

-- воспользуемся этим типом для описания отделов:

CREATE TABLE DEPARTMENTS(

Dep_Id NUMBER CONSTRAINT departments_pk PRIMARY KEY,

Caption VARCHAR2 (50),

Addr address_typ

);

 

CREATE SEQUENCE Departments_seq;

 

-- заведем отдел и изменим данные некоторых сотрудников:

INSERT INTO Departments VALUES

(Departments_seq.NEXTVAL, 'Отдел продаж',

NEW address_typ('141980', 'Дубна', 'Университетская, 19'));

 

Здесь выражение NEW address_typ('141980', 'Дубна', 'Университетская, 19') означает обращение к конструктору объекта.

 

Примечание: каждый объект имеет свой конструктор по умолчанию, создаваемый СУБД автоматически при компиляции объекта. Но программист имеет возможность создавать и собственные конструкторы.

 

-- выполним запросы к полям, содержащим объекты:

SELECT d.Caption, d.Addr.ZIP, d.Addr.City, d.Addr.Location FROM Departments d;

 

Примечание: перед именем поля, содержащим объект, необходимо указывать название таблицы.

 


Поделиться:

Дата добавления: 2015-08-05; просмотров: 62; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты