Учебное пособие Для студентов университетов Специальностей «Информатика», «Прикладная математика»



Pdf көрінісі
бет165/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   161   162   163   164   165   166   167   168   ...   177
конструктор
 (constructor), возвращающая инициализированный объект. 
Система  создает  функцию-конструктор  по  умолчанию,  имя  функции 
совпадает с именем объектного типа, а список параметров – со списком 
атрибутов. 
На атрибуты объекта, как и на поля записи, можно ссылаться, исполь-
зуя уточняющее имя, записываемое перед именем атрибута через точку. 
Создадим  инициализированный  экземпляр  типа BOOK_T и  изменим 
значение атрибута TITLE. 
DECLARE 
   BOOK  BOOK_T := BOOK_T (10, 'Казаки', 'Толстой Л.', 5000); 
BEGIN  
 
187


 
   BOOK.TITLE := 'Война и мир'; 
END; 
Чтобы проверить, является объект NULL-объектом или нет, использу-
ется условие IS NULL. Например: 
DECLARE 
   BOOK  BOOK_T := BOOK_T (10, 'Казаки', 'Толстой Л.', 5000); 
BEGIN  
   IF   BOOK   IS    NULL   THEN 
RAISE_APPLICATION_ERROR(-20000,      'BOOK  IS    NULL'); 
   ELSE 
     BOOK.TITLE := 'Ярость'; 
   END IF; 
END; 
После  создания  каждый  экземпляр  объекта  находится  в  определен-
ном, свойственном только ему состоянии. Для модификации его состоя-
ния  используются  методы  объекта,  которые  должны  ссылаться  на  кон-
кретный  экземпляр  объекта.  Следовательно,  при  вызове  метода  нужно 
использовать следующий синтаксис: 
имя_объекта.имя_метода 
где  имя_объекта    имя  объектной  переменной,  а  имя_метода    имя  вы-
зываемого  метода.  Если  метод  не  содержит  аргументов,  его  можно  вы-
зывать без круглых скобок, как и обычную процедуру PL/SQL, либо со 
скобками  и  пустым  списком  аргументов.  Это  продемонстрировано  на 
примере следующего блока PL/SQL. Для проверки правильности работы 
методов создадим специальную таблицу TEST_T, содержащую два поля: 
фамилию автора и название книги, цену книги. 
CREATE TABLE TEST_T(FORM VARCHAR2(40), PRICE NUMBER 
(7)); 
DECLARE 
   BOOK1 BOOK_T := BOOK_T (10, 'Казаки', 'Толстой Л.', 5000); 
   BOOK2 BOOK_T:= BOOK_T (20, 'Война и мир', 'Толстой Л.', 15000); 
   FORM1 VARCHAR(40); 
   FORM2 VARCHAR(40); 
BEGIN  
   -- Изменяет значение атрибута PRICE.  
   BOOK1. CHANGE_PRICE(7000); 
   BOOK2. CHANGE_PRICE(17000); 
   -- Выбираем фамилию автора и название книги.    
 
188


 
   FORM1 := BOOK1.FORMATTED_NAME; 
   FORM2 := BOOK2.FORMATTED_NAME(); 
   -- Полученные данные помещаем в таблицу TEST_T.    
   INSERT INTO TEST_T VALUES(FORM1, BOOK1.PRICE); 
   INSERT INTO TEST_T VALUES(FORM2, BOOK2.PRICE); 
END; 
Осуществить проверку правильности работы методов можно, выбрав 
из таблицы TEST_T информацию оператором 
SELECT * FROM TEST_T; 
Все, что касается списка параметров, подчинено тем же правилам, что 
и для хранимых процедур и функций. Методы можно вызывать с исполь-
зованием  как  именного,  так  и  позиционного  представления,  а  их  пара-
метры  могут  иметь  значения  по  умолчанию.  Методы  могут  быть  пере-
гружаемыми.  Можно  переопределять  тип  и  число  аргументов  метода. 
Если в момент выполнения метода возникает исключение, то процедура 
завершает  свою  работу,  причем  выходным  параметрам  типа OUT и IN 
OUT ничего не присваивается; если же были выполнены какие-то изме-
нения в SELF, то они также ликвидируются. 


Достарыңызбен бөлісу:
1   ...   161   162   163   164   165   166   167   168   ...   177




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет