- •4.1. Создание и вызов методов класса. Объектный синтаксис и встроенный sql.
- •«Номер буква — руководитель — количество_учеников»
- •«Направление - Номер буква — руководитель — количество_учеников»
- •5.1. Создание и вызов метода класса. Объектный синтаксис
- •6.1. Создание процедур. Виртуальные вызова и полиморфизм. Динамический sql
- •6.2. Освоить работу с запросами
- •Дополнительное задание:
- •Вопросы для самопроверки:
- •В отчет:
ЛР1
Постреляционные базы данных, 2012
г. ИУ5-93
Лабораторная работа «Модели представления данных в СУБД Cache`» по дисциплине «Постреляционные базы данных»
Цель работы:
Изучить различные модели представления данных в среде Cache`.
Освоить методы работы с данными используя прямой доступ к глобалам, объектный подход и реляционное представление.
Получить навыки работы с инструментальными средствами среды Cache` Studio и среды Cache` Портал, а также функциями Cache` Object Script для обращения к различным представлениям данных.
Время выполнения:
Время выполнения лабораторной работы 4 часа.
Пункты задания для выполнения:
Задание 1. Освоить методы работы с объектами используя прямой доступ к глобалам, объектный подход и реляционное представление.
1.1. Определить в среде Cache` Studio класс "Scls"(Класс) - хранимый класс. Содержит свойства:
num – номер (например, 10) - целое,
chr - буква (например, А) - символ,
dir – ФИО классного руководителя – строковое.
индекс типа IDKEY на полях номер и буква (создается отдельно через мастер индексов).
Для создания классов используется среда Cache` Studio. Для определения свойств и методов классов используются соответствующие мастера. Откомпилировать класс.
Для просмотра созданных классов используется среда Cache` Портал (раздел System Explorer → Classes, пакет USER) .
1.2. Освоить создание объектов различными методами.
Существующие объекты и их свойства можно просмотреть в среде Cache` Портал в виде таблиц (раздел System Explorer → Просмотр SQL схем, пакет USER, раздел таблицы) и в виде глобалов (раздел System Explorer → Глобалы, пакет USER).
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «Класс» (метод %New()), определить значения его полей (используя точечную нотацию и команду set) и сохранить в базе данных (метод %Save()):
set o==##class(название класса).%New()
set o.поле=значение
do o.%Save()
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора INSERT для добавления объекта классов «Класс» (с параметрами название, буква, руководитель):
insert into таблица(поле1,поле2) values(значение1,значени2)
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «Класс», используя обращение к глобалам и функции работы со списками ($lb):
set ^глобал(индекс)=$lb(“”,поле1,поле2)
1.3. Освоить работу с объектами различными методами.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL операторов SELECT для просмотра списка 10-х Классов.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора UPDATE для изменения букваа Класса:
update таблица set поле1=значение1, поле2=значение2 where условие
В среде Cache` Terminal на языке Cache` Object Script открыть объект класса «Класс» (метод %OpenId()), просмотреть и изменить значения его НЕ КЛЮЧЕВЫХ полей (используя точечную нотацию) и сохранить в базе данных (метод %Save()):
set o=##class(название).%OpenId(индекс)
set o.поле=значение
do o.%Save()
1.4. Освоить удаление объектов различными методами.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора DELETE для удаления объектов:
delete таблица where условие
В среде Cache` Терминал продемонстрировать удаление объектов класса используя вызовы методов %DeleteId (для объектов) и Kill (для глобалов):
do ##class(название).%DeleteId(индекс)
kill ^глобал(индекс)
Задание 2. Освоить методы работы с производными классами в различных представлениях
2.1. Определить в среде Cache` Studio класс «specCls» ( углубленный Класс - СпецКласс), производный от класса «Класс», добавив свойство:
dop — направление углубленного обучения – строковое.
2.2. Освоить создание объектов производного класса.
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «СпецКласс» (метод %New()), определить значения его полей (используя точечную нотацию и команду set) и сохранить в базе данных (метод %Save()).
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора INSERT для добавления объекта классов «СпецКласс» (с параметрами номер, буква, руководитель, направление).
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «СпецКласс», используя обращение к глобалам и функции работы со списками ($lb).
2.3. Освоить работу с объектами производного класса различными методами.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL операторов SELECT для просмотра списка всех 11-х Классов и СпецКлассов по математике.
В среде Cache` Terminal на языке Cache` Object Script открыть объект класса «СпецКласс» (метод %OpenId()), просмотреть и изменить значения его полей (используя точечную нотацию) и сохранить в базе данных (метод %Save()).
Задание 3. Освоить методы работы со связанными объектами в различных представлениях
3.1. Создать Класс "Fuculty" (ученик) - хранимый. Содержит свойства:
FIO - ФИО – строковое (обязательное),
inCls — его Класс — ссылка (отношение) на объект класса "Класс" (обязательное), создается как свойство типа «отношение» (при задании связанного поля в другом классе следует указать новое поле «students»-«ученики» вместо выбора из списка существующих).
3.2. Освоить создание связанных объектов различными методами.
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «ученик» (метод %New()), определить значения его полей (используя точечную нотацию и команду set) и сохранить в базе данных (метод %Save()).
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора INSERT для добавления объекта классов «ученик».
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «ученик», используя обращение к глобалам и функции работы со списками ($lb).
3.3. Освоить работу со связанными объектами различными методами.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL операторов SELECT для просмотра списка учеников и их Классов c сортировкой по номеру класса, используя ссылочный синтаксис вместо соединения таблиц.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора UPDATE для перевода учеников из 10А в 11А.
В среде Cache` Terminal на языке Cache` Object Script открыть объект класса «ученик» (метод %OpenId()), просмотреть и изменить значения его Класса и/или атрибутов Класса (используя точечную нотацию) и сохранить в базе данных (метод %Save()).
Задание 4. Освоить способы определения, переопределения и вызова методов экземпляров.
4.1. Создание и вызов методов класса. Объектный синтаксис и встроенный sql.
Добавить к классу Класс метод экземпляра Inf(), который возвращает строку вида:
«Номер буква — руководитель — количество_учеников»
для текущего Класса. Метод без параметров. Обращение к полям объекта через «..поле» или «##this.поле». Количество учеников определяется через поле «ученики» (метод коллекции Count() ). Конкатенация строк через подчеркивание: «строка1_строка2». Команда возврата из функции: «quit значение».
Пример метода экземпляра:
Method Summa() As %Integer {
set var=..поле1 + ..поле2 // присваивание
quit var // вернуть значение
}
Создать объект класса Класс, используя Портал и SQL команду INSERT или используя Терминал и команды работы с объектами или обращаясь глобалам.
Открыть в терминале объект класса Класс и вызвать его метод с отображением результата (команда write вывода на экран):
set oref=##class(название).%OpenId(индекс)
write oref.Inf()
Переопределить в классе СпецКласс метод Inf() для возврата строки вида:
«Направление - Номер буква — руководитель — количество_учеников»
для текущего СпецКласса. Количество_учеников определяется через встроенный SQL с передачей параметров, например:
set a=«NNN»
&sql(select поле into :b from таблица where поле=:a)
write b
,где a и b — переменные программы, а :a и :b - те же переменные, переданные во встроенный SQL.
Создать объект класса СпецКласс, открыть его в Терминале и вызвать метод Inf() с отображением результата.
Задание 5. Освоить способы определения, переопределения и вызова методов класса
5.1. Создание и вызов метода класса. Объектный синтаксис
Добавить к классу Класс метод класса create(номер,буква,руководитель), который проверяет существование объекта Класса (метод %ExistsId(индекс)), и, если он существует, то открывает его (метод %OpenId(индекс)), иначе создает новый объект (метод %New()) с номером и буквой. Затем (при открытии или создании) изменяет значение поля руководитель и сохраняет объект (метод %Save()). Метод имеет входные параметры: номер, буква и руководитель Класса со значениями по умолчанию; и выходной параметр — созданный объект.
При создании метода через мастер следует указать, что он является и хранимой процедурой.
Пример метода класса и хранимой процедуры с параметрами по умолчанию:
ClassMethod create(t As %String = "ХХХ") As org [ SqlProc ]
{
код метода
}
Пример условной конструкции:
if x>10 { a=20 }
else { a=200 }
Вызвать метод класса из Терминала для нового объекта:
do ##class(название).метод(параметры)
или метод экземмпляра для существующего объекта:
set o=##class(название).метод(параметры)
write o.Inf()
Проверить в Портале (раздел Таблицы) добавление и изменение объектов.
В Портале (раздел Хранимые процедуры) вызвать хранимую процедуру, соответствующую методу класса, для добавления нового и изменения существующего объектов.
5.2. Создание и вызов метода класса. Встроенный SQL
Добавить к классу ученик метод класса create(ФИО, Класс), который проверяет существование объекта Класса (метод %ExistsId(индекс)), и, если его не существует, то создает его, используя встроенный SQL (параметры передаются как «:переменная»):
&sql(insert into таблица(поля) values(:значения))
, затем создает ученика, используя встроенный SQL (аналогично командой INSERT), для создания ученика Класса.
Метод имеет входные параметры: ФИО ученика и номер и букву Класса. Выходных параметров у метода нет. При создании метода указать, что он является и хранимой процедурой.
Вызвать метод класса из Терминала для создания ученика нового Класса и создания ученика существующего Класса:
do ##class(название).метод(параметры)
Проверить в Портале (раздел Таблицы) добавление объектов. В Портале (раздел Хранимые процедуры) вызвать хранимую процедуру, соответствующую методу класса и проверить результат ее выполнения.
Задание 6. Освоить методы работы с объектом %ResultSet