
- •Реализация парадигм ООП в PL/SQL
- •Парадигмы ООП в PL/SQL
- •Инкапсуляция (1)
- •CREATE OR
- •CREATE OR
- •Переменные объектного типа (использование объектов)
- •Наследование (1)
- •Наследование (2)
- •Полиморфизм (1)
- •Полиморфизм (2)
- •Полиморфизм (3)
- •Ограничения в ООП PL/SQL
- •Дополнительные возможности (1) Приведение типов - oператор TREAT
- •Дополнительные возможности(2) Перегрузка операторов сравнени
- •Дополнительные возможности(3) Коллекции объектов
- •Дополнительные возможности (4) Операторы для коллекций объектов
- •Дополнительные возможности (5) Коллекции объектов - использование
- •Хранение объектов в БД
- •Ссылки на объекты
Реализация парадигм ООП в PL/SQL
Парадигмы ООП в PL/SQL
•Инкапсуляция
•Наследование
•Полиморфизм
•Ограничения в реализации
•Дополнительные возможности
–Приведение типов
–Перегрузка операторов сравнения
–Коллекции объектов
–Хранение объектов в СУБД
–Ссылки на объекты (OBJECT REF)
Инкапсуляция (1)
Инкапсуляция — свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента (то, что у него внутри), а взаимодействовать с ним посредством предоставляемого интерфейса (публичных членов — методов, данных etc.), а также объединить и защитить жизненно важные для компонента данные. При этом пользователю предоставляется только интерфейс — спецификация объекта.

CREATE OR
(
FNumber
FCustomer
CONSTRUCTOR RETURN SELF
MEMBER
STATIC
)
NOT FINAL;
Атрибуты
типа
Конструкт Методор
экземпля
Статическ ий метод
PROCEDURE exportAllAccounts

CREATE OR
CONSTRUCTOR
IS
BEGIN self.FNumber self.load;
RETURN;
END;
MEMBER FUNCTION BEGIN
… … … … …
return v_xResult; END;
END;
ия
конструкт
ора
AS RESULT
Реализац ия метода

Переменные объектного типа (использование объектов)
DECLARE
xCreditAcc TAccount;
xDebetAcc TAccount;
xTransaction TTransaction;
BEGIN
xCreditAcc := new TAccount('40101810400000010801'); xDebetAcc := new TAccount('40101810400000020304'); xTransaction := new TTransaction( xDebetAcc,
xCreditAcc,
100);
xTransaction.doIt;
COMMIT;
END;
Наследование (1)
Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком,
наследником или производным

Наследование (2)
CREATE OR REPLACE TYPE TAccount UNDER TPersistent
( |
|
|
|
FNumber |
VARCHAR2(20), |
|
|
FCustomer TCustomer, |
Тип |
|
|
CONSTRUCTOR FUNCTION |
SELF AS |
||
RESULT, |
FUNCTIONпредок RETURN |
||
MEMBER |
|||
NUMBER, |
|
|
|
STATIC |
PROCEDURE exportAllAccounts |
||
) |
|
|
|
NOT FINAL; |
|
|
|
Полиморфизм (1)
Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Полиморфизм (2)
Перегрузка
CREATE OR методов TPersistent
( |
|
FNumber |
|
FCustomer |
|
OVERRIDING MEMBER |
PROCEDURE save, |
OVERRIDING MEMBER |
PROCEDURE remove, |
|
Не |
STATIC FUNCTION load(v_pId IN NUMBER) RETURN |
|
) |
финальный в |
NOT FINAL; |
иерархии |