ПСУБД ЛР №2 (2 часа)
.pdfМинистерство образования Республики Беларусь Учреждение образования «Полоцкий государственный университет»
Факультет информационных технологий Кафедра технологий программирования
Методические указания
к выполнению лабораторной работы №2
по дисциплине «Постреляционные СУБД»
для специальности 1-40 01 01 Программное обеспечение информационных технологий
на тему «Объектный доступ и хранимые объекты»
Новополоцк, 2017 г.
Тема: Объектный доступ и хранимые объекты.
Цель работы: Ознакомиться с работой в терминале СУБД «Cachè». Научиться задавать шаблоны, определять свойства и их параметры.
Теоретическая часть
Классы типов данных поддерживают различные параметры, которые меняются от типа к типу и выполняют различные действия. Примеры параметров:
MAXLEN – задает максимальное число символов, которое может содержать строка;
MAXVAL – задает максимальное значение;
MINLEN – задает минимальное число символов, которое может содержать строка;
MINVAL – задает минимальное значение;
FORMAT – задает формат отображения. Значение параметра соответствует опции форматирования функции $FNUMBER, которая выполняет форматирование;
SCALE – определяет число цифр после десятичной точки;
PATTERN – задает шаблон, которому должна соответствовать строка. Значение параметра PATTERN должно быть правильным выражением шаблона Caché (смотрите таблицы 1 и 2);
TRUNCATE – если значение равно 1, то строка символов должна обрезаться до длины, указанной в параметре MAXLEN (умолчание), если равно 0, то нет;
ODBCDELIMITER – задает символ-разделитель в списке %List, когда он передается через ODBC;
VALUELIST – задает список значений для перечислимых свойств;
DISPLAYLIST – определяет дополнительный список значений перечислимого свойства, задает формат отображения для перечислимого свойства, используется вместе с параметром VALUELIST.
Шаблон состоит из одного или нескольких шаблонов, следующего
вида:
<кол-во><чего>[<кол-во><чего>]
где <кол-во> – это фактор повторения шаблона, <чего> – класс символов, которые могут повторяться. В таблице 1 приведены форматы факторов повторения, в таблице 2 классы символов.
Таблица 1 – Форматы факторов повторения
Количество |
Значение |
3(число) |
Шаблон должен повторяться ровно столько раз |
1.3 |
Шаблон должен повторяться от 1 до 3 раз |
.3 |
Шаблон должен повторяться самое большее 3 раза |
3. |
Шаблон должен повторяться не меньше 3 раз |
. |
Шаблон должен повторяться любое число, включая 0 |
Таблица 2 – Классы символов
Код |
Значение |
Код |
Значение |
A |
Буква (в верхнем или |
C |
Управляющий символ |
|
нижнем регистре) |
|
|
U |
Буква в верхнем регистре |
E |
Любой символ |
L |
Буква в нижнем регистре |
ANP |
Комбинация кодов |
N |
Число |
“abd” |
Литеральная строка |
P |
Пунктуация |
|
|
Примеры:
3N, шаблоном будет строка, содержащая 3 цифры. 2N1P2N1P4N – шаблон будет служить проверкой на ввод даты.
Для даты также может использовать следующий шаблон: 2N1”.”2N1”.”4N.
1U.AP – первый символ – прописная буква, остальные любое количество букв и знаков препинания.
Параметры класса – это константы, то есть значения, устанавливаемые во время определения класса или в любое другое время перед компиляцией класса. Параметры класса устанавливаются для всех объектов этого класса и могут использоваться в методах класса.
Во время выполнения значения параметров класса изменениям не подлежат.
Значения параметров класса наследуются и могут перекрываться в производных классах, либо пополняться дальнейшими параметрами класса.
Пример:
Допустим, класс MyApp.A имеет параметр XYZ со значением 100
Class MyApp.A
{ Parameter XYZ = 100; }
Подкласс MyApp.B может перекрыть значение этого параметра.
Class MyApp.B Extends MyApp.A { Parameter XYZ = 200; }
Параметры класса обычно используются при компиляции с участием генераторов методов. Генератор метода использует параметр класса с целью управления ходом генерации, например, для конкретизации поведения типов данных.
Параметр класса имеет специальное поведение, когда используется с классами типов данных. С классом типов данных, параметр класса используется для обеспечения способа изменения поведения типа данных.
Например, класс типа данных %Integer имеет параметр класса MAXVAL, который определяет максимальное значение для свойства типа
%Integer.
Параметр класса имеет специальное поведение, когда используется с классами типов данных. С классом типов данных, параметр класса используется для обеспечения способа изменения поведения типа данных.
Например, класс типа данных %Integer имеет параметр класса MAXVAL, который определяет максимальное значение для свойства типа %Integer. Определим класс со свойством NumKids следующим образом:
Property NumKids As %Integer (MAXVAL=10);
Это означает, что параметр MAXVAL для класса %Integer должен быть установлен равным 10 для свойства NumKids.
Это работает следующим образом: методы проверки для классов типов данных все реализованы в виде генераторов методов и используют параметры классов для контроля генерации методов. В этом примере, это определение свойства генерирует код метода NumKidsIsValidDT, который проверяет, превышает ли значение свойства NumKids число 10. Без использования параметров класса для подобной функциональности потребуется создать определение класса IntegerLessThanTen.
У любого зарегистрированного класса имеется параметр класса
PROPERTYVALIDATION.
Он указывает должны или нет проверяться значения свойств, и если да, то, когда именно:
0 – означает отсутствие проверки
1 – предполагает проверку в момент присваивания значения.
2 (по умолчанию) – означает проверку при сохранении.
При каждом изменении этого параметра, сопровождаемом перекомпиляцией, генераторы методов вставляют соответствующий код проверки значений свойств каждый раз в подходящее место. Таким образом, параметры класса служат для согласования поведения класса с конкретными потребностями данного приложения.
Можно изменять определение свойства, используя одно или несколько ключевых слов. Все ключевые слова являются необязательными и имеют значение по умолчанию, если ключевое слово явно не задано.
Calculated – задает вычисляемое свойство, которое не сохраняется. Подклассы наследуют это ключевое свойство и не могут его перекрывать.
Пример класса, содержащего вычисляемое свойство:
Class User.Person Extends %Persistent [ ClassType = persistent, ProcedureBlock ]
{
Property FirstName As %String;
Property FullName As %String [ Calculated ];
Property LastName As %String;
Property Patronymic As %String;
Method FullNameGet() As %String
{
set full = ..LastName_" "_..FirstName_" "_..Patronymic Quit full
}
Method FullNameSet(fullName As %String) As %Status
{
set last = $piece(fullName," ",1) set first = $piece(fullName," ",2)
set patronymic = $piece(fullName," ",3) set ..LastName = last
set ..FirstName = first
set ..Patronymic = patronymic quit $$$OK
}
}
Утилита Caché Terminal (для доступа к утилите необходимо щелкнуть правой клавишей мыши на кубе Caché и выбрать в меню пункт Терминал) может быть использована для отладки программ, процедур, функций, проверки работы отдельных операторов. Работа ведется в режиме командной строки. Утилита чрезвычайно проста. После приглашения набирается команда и нажимается ENTER. Здесь же выводится результат выполнения команды. Окно утилиты приведено на рисунке 1.
Рисунок 1 – Окно утилиты Caché Terminal
Пример работы с терминалом для описанного выше класса представлен на рисунке 2.
Рисунок 2 – Пример работы с терминалом
Практическая часть
Содержание задания:
Для созданных классов из предыдущей лабораторной работы:
1 Задайте шаблоны для всех свойств, для которых это возможно.
2Определите для всех свойств возможные параметры.
3В случае необходимости, создайте параметры классов.
4Продумайте, какие свойства будут вычисляемыми, определите методы, позволяющие работать с ними и в объектном, и реляционном представлении.
5Создайте для каждого класса метод, позволяющий выводить полную информацию об объекте этого класса.
6Проверьте работу методов в Терминале.
Продемонстрируйте работу преподавателю!