Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПСУБД ЛР №2 (2 часа)

.pdf
Скачиваний:
3
Добавлен:
18.02.2023
Размер:
537.39 Кб
Скачать

Министерство образования Республики Беларусь Учреждение образования «Полоцкий государственный университет»

Факультет информационных технологий Кафедра технологий программирования

Методические указания

к выполнению лабораторной работы №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Проверьте работу методов в Терминале.

Продемонстрируйте работу преподавателю!