lab1_2012_94 (1037564), страница 2
Текст из файла (страница 2)
Пример процедуры:
Proc(параметры) Public
{
код процедуры
quit
}
Пример работы с динамическим запросом:
set o=##class(%ResultSet).%New("%DynamicQuery:SQL")
do o.Prepare("select поля from таблица where условие" )
do o.Execute()
while o.Next()
{
set a=o.Data("поле")
write !,a
}
В среде Cache` Terminal вызвать процедуру:
do процедура^программа(параметр)
Преобразовать процедуру в метод класса Занятия и продемонстрировать ее выполнение в Терминале как метод класса и в Портале как хранимую процедуру.
6.2. Освоить работу с запросами
В среде Cache` Студия создать запрос InMonth(месяц), который возвращает список занятий, проходящих в заданном месяце , а также название, длительность и стоимость их курсов сортировкой по датам.
Определить запрос как хранимую процедуру и продемонстрировать ее выполнение в Портале.
Дополнительное задание:
Задание 7.1. Работа с коллекциями.
В класс "Курсы" - добавить свойство:
-
Metro - станций метро — список (массив) строковых.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL операторов для выполнения запросов, например:
-
Просмотр списка метро для данного курса.
-
Добавление/удаление метро для курса.
В среде Cache` Terminal продемонстрировать (или написать соответствующую процедуру) для добавления/удаления метроей, используя объектный синтаксис.
В среде Cache` Terminal продемонстрировать (или написать соответствующую процедуру) для добавления/удаления метро, используя глобалы.
Задание 7.2. Преобразование классов объектов.
В среде Cache` Terminal продемонстрировать (или написать соответствующую процедуру на языке Cache` Object Script в среде Cache` Studio и вызвать ее из среды Cache` Terminal) преобразование объекта класса «Курсы» в объект класса «ИноКурсы» и наоборот с указанием языка. Реализуется через обращение к глобалам.
Задание 8. Дополнительные возможности работы с объектами
8.1. Скрытые свойства. Вложенные объекты
Создать класс LessonPrice (стоимость занятий) — ВСТРОЕННЫЙ, содержащий поля:
-
sum (стоимость часа) — целое,
-
hours (количество часов) — целое.
В класс "занятия" - добавить свойство:
-
price (цена) — объект класса стоимость, СКРЫТОЕ (устанавливается в Инспекторе свойств в Студии).
и методы:
-
setpr (стоимость, количество) - устанавливает значения стоимость и количество для цены секции, выходных параметров нет. Обращение к полям через объектный синтаксис.
-
getpr() — возвращает значение цены (=стоимость*количество).
В среде Cache` Терминал открыть объект секции и продемонстрировать вызов методов для задания и просмотра его прибыли. В Портале продемонстрировать содержимое таблицы занятия.
8.2. Переопределение обработчиков событий
Создать класс LessonArhiv (архив) — хранимый, содержащий поля:
-
course — строковое,
-
col — количество занятий - строковое,
-
-
his (источник записи) — строковое.
В классе "занятия" переопределить метод класса для обработки события %OnAfterSave() так, чтобы он при сохранении НОВОГО занятия добавлял в Архив запись с названием курса (если таких курсов в архиве нет) или увеличивал на 1 значение количества занятий (если курс уже есть в архиве) (использовать встроенный SQL). Значение поля his = «obj».
В Терминале создать и сохранить занятия (методы %New() и %Save()). В Портале продемонстрировать содержимое таблицы Архив.
В Терминале открыть и изменить занятия (методы %OpenId() и %Save()). В Портале продемонстрировать содержимое таблицы Архив.
В Портале добавить занятия (sql запрос INSERT). В Портале продемонстрировать содержимое таблицы Архив.
8.3.Вычисляемые поля
В класс "Курсы" - добавить свойство:
-
avsal (средняя стоимость) — целое, ВЫЧИСЛЯЕМОЕ.
и переопределить его методы:
-
GET — возвращает среднюю стоимость занятий для данного курса (использовать встроенный SQL),
-
SET — для всех занятий данного курса устанавливает стоимость занятий равной указанной (использовать встроенный SQL).
В среде Cache` Terminal открыть объект курса и продемонстрировать работу с вычисляемым полем:
write объект.avsal
set объект.avsal=3000
В среде Портала продемонстрировать соответствующие изменения в таблице занятий.
Задание 9: Дополнительные возможности работы с таблицами
9.1. Вычисляемые поля таблиц
В класс "Курсы" - добавить свойство:
-
insec ( количество занятий для данной курса) — целое, SQL-ВЫЧИСЛЯЕМОЕ. Не переопределены методы Get и Set. Определить SQL-формулу для вычисления.
Пример:
Property cs As %Integer [ Calculated,
SqlComputeCode = { set n={поле} &sql(select поле into :c from таблица where поле=:n)
set {cs}=c}, SqlComputed ];
В классе "ИноКурсы" - переопределить свойство:
-
insec ( количество занятий для всех курсов на данном языке).
В среде Cache` Портал продемонстрировать содержимое таблиц Курсы и ИноКурсы.
9.2. Триггеры
В класс "занятия" добавить триггер:
-
ПОСЛЕ ДОБАВЛЕНИЯ - при добавлении занятия добавлять в Архив запись с названием курса и количеством заниятий по этому курсу в данный момент. Значение поля his = «sql».
В Терминале создать и сохранить занятия (методы %New() и %Save()). В Портале продемонстрировать содержимое таблицы Архив.
В Портале добавить занятия (sql запрос INSERT). В Портале продемонстрировать содержимое таблицы Архив.
Вопросы для самопроверки:
-
Возможности создания классов и их свойств в среде Cache` Studio.
-
Назначение и возможности утилит Cache` Studio, Cache` Портал и Cache` Терминал.
-
Как связаны между собой таблицы, объекты и глобалы?
-
Как связаны между собой названия классов и глобалов?
-
Как связаны экстенты базового и производного классов?
-
Перечислите основные функции работы с объектами хранимых классов.
-
Каким образом можно обращаться к объектам классов как к реляционным таблицам?
-
Где можно просмотреть данные в виде таблиц и в виде глобалов?
-
Каким образом можно работать со списками и массивами, как хранятся их элементы?
-
Каким образом формируются глобалы? В каких глобалах хранятся производные классы?
-
Как импортировать структуры и данные СУБД Cache`?
-
Метод класса и метод экземпляра класса: чем они отличаются, как определяются и как вызываются?
-
Что такое полиморфизм? Приведите пример виртуального вызова.
-
Применение встроенного SQL. Передача параметров.
-
Назначение и использование объекта %ResultSet. Его основные методы.
-
Как определяются и вызываются хранимые процедуры?
-
Назначение, типы и определение триггеров. Как они работают?
-
Что такое вычисляемые поля? Как задаются и чем отличаются вычисляемые поля для объектов и запросов?
-
Что такое хранимый и встроенный классы, чем они отличаются?
В отчет:
-
Описания классов.
-
Тексты SQL запросов, команд и процедур на языке COS.
-
Содержимое глобалов и таблиц (скриншоты из Портала).