русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Лекция №13: Объектно-ориентированное программирование в PL/SQL


Дата добавления: 2015-07-09; просмотров: 628; Нарушение авторских прав


Объектные типы Объектным типом называется определяемый пользователем тип данных, который инкапсулирует структуру данных и подпрограммы. Переменные, используемые в структуре данных объектного типа, называются атрибутами, или переменными объектного типа. Функции и процедуры, определяющие поведение объекта, называются методами. При объявлении переменной объектного типа создается объект с атрибутами и методами, определяемым его типом. Информация об объектном типе сохраняется в базе данных. К преимуществам применения объектных типов можно отнести следующие их возможности:
  • использование объектных типов позволяет перемещать код управления данными из блоков PL/SQL в методы объекта с помощью инкапсуляции данных;
  • объектный тип ограничивает доступ к структуре объекта, предоставляя свои методы для работы с данными;
  • объектные типы хорошо реализуются классами объектно-ориентированных языков программирования.
Спецификация и тело объектного типа Объектный тип состоит из двух частей: спецификации и тела. Спецификация типа доступна в клиентском приложении. Тело типа скрыто, но разработчик существующего в базе данных типа имеет возможность изменять реализацию методов. Спецификация типа создается оператором CREATE TYPE, который, с некоторыми сокращениями, может иметь следующее формальное описание: CREATE [OR REPLACE] TYPE [schema .] type_name { { IS | AS } OBJECT } [( { attribute datatype [sqlj_object_type_attr] } ] | { [ {[[[NOT] OVERRIDING] [[NOT] FINAL] [[NOT] INSTANTIABLE] ] { { MEMBER | STATIC } { procedure_spec | function_spec }| | {{ MAP | ORDER } MEMBER function_spec}} }] .,…} [[NOT] FINAL] [[NOT] INSTANTIABLE]; Определение функции (function_spec) указывается как: FUNCTION name (parameter datatype .,…) { RETURN datatype } Определение процедуры (procedure_spec) указывается как: PROCEDURE name (parameter datatype .,…) Тело типа создается оператором CREATE TYPE BODY, который, с некоторыми сокращениями, может иметь следующее формальное описание: [CREATE TYPE BODY type_name {IS | AS} { {MAP | ORDER} MEMBER function_body; | MEMBER {procedure_body | function_body};} [MEMBER {procedure_body | function_body};]... END;] Создание объектного типа выполняется в два этапа: сначала оператором CREATE TYPE создается спецификация типа, а затем оператором CREATE TYPE BODY создается- тело типа. Например: -- Создание объектного типа CREATE TYPE MyT AS OBJECT ( r1 REAL, -- Атрибуты типа r2 REAL, MEMBER FUNCTION plus (x MyT) RETURN MyT ); CREATE TYPE BODY MyT AS MEMBER FUNCTION plus (x MyT) RETURN MyT IS BEGIN RETURN MyT (r1 + x.r1, r2 + x.r2); END plus; END; -- Применение переменной объектного типа: DECLARE с1 MyT; -- Создается объект с1 типа MyT BEGIN с1 := MyT (1,1); -- Вызов конструктора END; На атрибут объектного типа накладываются следующие ограничения:
  • типом атрибута может быть любой тип данных Oracle за исключением некоторых типов, включая типы LONG, LONG RAW, NCHAR, NCLOB, NVARCHAR2, ROWID, BOOLEAN, PLS_INTEGER, RECORD, REF CURSOR, %TYPE и %ROWTYPE, а также типы, определенные в пакете PL/SQL;
  • при объявлении атрибута его нельзя инициализировать, используя оператор присваивания или ключевое слово DEFAULT;
  • на атрибут не может быть наложено ограничение NOT NULL.
Типом атрибута может быть любой допустимый тип или другой объектный тип, называемый в этом случае вложенным объектным типом. Объектные типы могут применяться при создании таблиц как типы полей. Например: CREATE TYPE typ1 AS OBJECT (a1 NUMBER, MEMBER FUNCTION getf1 RETURN NUMBER); -- … CREATE TABLE tbl1(col typ1); -- Создание таблицы -- … SELECT col.getf1() FROM tbl1; -- Вызов метода объектного типа Спецификация объектного типа должна включать объявление каждого общедоступного метода, реализация которого записывается в теле объектного типа. Перед названием метода объектного типа при спецификации объектного типа и описании тела этого типа всегда указывается ключевое слово MEMBER. Для квалификации атрибутов в методах объектного типа можно использовать ключевое слово SELF, рассматриваемое как ссылка на данный объект. Однако синтаксис языка PL/SQL не требует обязательной квалификации атрибута. Параметр SELF может быть указан первым параметром функции и процедуры и явным способом. Если параметр SELF явно не указывается, то для функции предполагается определение параметра с опцией IN (входной параметр), а для процедуры - с опцией IN OUT (входной-выходной параметр). Объектный тип может иметь перегружаемые методы. Сравнение значений объектного типа В отличие от значений скалярных типов для значений объектных типов не существует единого правила их сравнения. В языке PL/SQL определены ключевые слова MAP и ORDER, которые позволяют специфицировать метод, определяющий правила сравнения значений объектного типа. Объектный тип может иметь только один метод, выполняющий сравнение экземпляров данного типа, - MAP-метод или ORDER-метод. В зависимости от значения объектного типа MAP-метод можно рассматривать как некоторую функцию хеширования. ORDER-метод - это функция с двумя параметрами (первый из которых является встроенным по умолчанию), возвращающая значение скалярного типа (DATE, NUMBER, VARCHAR2, CHARACTER или REAL), получаемое при сравнении первого параметра, всегда равного SELF, со вторым параметром, указывающем объект этого же типа. В SQL-операторах всегда можно сравнивать два значения объектного типа на эквивалентность - полное совпадение значений всех атрибутов, но выполнять сравнение на упорядочивание можно только в том случае, если объектный тип имеет MAP-метод или ORDER-метод. Конструкторы объектного типа Oracle по умолчанию для каждого объектного типа создает конструктор, одноименный с названием типа. Конструктор используется для инициализации и возвращения экземпляра объектного типа. При инициализации объекта вызывается конструктор со списком параметров, которые определяют атрибуты в порядке их объявления.


<== предыдущая лекция | следующая лекция ==>
Лекция №12: Коллекции и записи | Создание пакета


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.087 сек.