Студопедия

КАТЕГОРИИ:

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


Абстрактные объекты




Абстрактные объекты – это объекты, экземпляры которых нельзя создать (по аналогии с абстрактными классами в ООП). Такие объекты создаются для того, чтобы в последствии выступить в качестве супертипов в наследовании.

Для того чтобы сделать объект абстрактным, в его объявление надо добавить параметр NOT INSTANTIABLE. Указание параметра NOT FINAL в этом случае является обычным, так как мало практического смысла в том, чтобы создавать абстрактный объект, который нельзя унаследовать.

 

Пример:

Допустим, есть иерархия объектов (см. рис. 1):

 

 

Рис. 1. Иерархия объектов

 

DROP TYPE sales_manager_typ;

DROP TYPE boss_typ;

DROP TYPE employee_typ;

DROP TYPE department_typ;

 

-- создадим объект department_typ для хранения информации об отделе:

 

CREATE OR REPLACE TYPE department_typ IS OBJECT(

Dep_Id NUMBER,

Caption varchar2(50)

);

/

 

-- создадим абстрактный объект employee_typ, обладающий основным набором свойств,

-- а также метод, определяющий количество отработанных работником дней:

 

CREATE OR REPLACE TYPE employee_typ IS OBJECT(

Name VARCHAR2(30),

Hire_Day DATE,

MEMBER FUNCTION DaysAtCompany RETURN NUMBER

)

NOT INSTANTIABLE

NOT FINAL;

/

 

CREATE OR REPLACE TYPE BODY employee_typ IS

MEMBER FUNCTION DaysAtCompany RETURN NUMBER IS

BEGIN

RETURN TRUNC(sysdate-Hire_Day);

END;

END;

/

 

-- создадим объект boss_typ, наследующий все свойства и методы объекта

-- employee_typ (для простоты примера данный объект не будет иметь собственных

-- свойств и методов):

 

CREATE OR REPLACE TYPE boss_typ UNDER employee_typ();

/

 

-- создадим объект sales_manager_typ, наследующий все свойства и методы объекта

-- employee_typ и имеющий дополнительное свойство, обозначающее принадлежность к

-- отделу:

 

CREATE OR REPLACE TYPE sales_manager_typ UNDER employee_typ(

Dep department_typ

);

/

 

Примечание: данные о взаимозависимостях типов можно посмотреть в таблице USER_TYPES:

SELECT supertype_name, type_name

FROM user_types

ORDER BY 1, 2;

 


Поделиться:

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





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