Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BDlab / 6__cache.docx
Скачиваний:
56
Добавлен:
18.03.2015
Размер:
63.26 Кб
Скачать

4. Порядок выполнения работы

А. Классы, свойства, методы

1. Запустить СУБД Cache:

Пуск | Программы | Cache | Cacheweb | Старт Cache

2. Открыть визуальную среду Cache Studio:

Пуск | Программы | Cache | Cacheweb | Studio ► ф. Studio

3. Установить соединение с сервером:

ф. Соединение с сервером |

Выберите из списка сервер Cache ← Cacheweb(localhost(1972)); кн. OK ►

ф. Установить соединение с Cacheweb; Имя пользователя ← _system; Пароль ← SYS;

кн. OK ► ф. Менеджер соединений Cache; Область ← USER; кн. OK ►

ф. _SYSTEM – CACHEWEB/USER-Default __system – Studio

4. Создать класс Person (персона):

ф. Studio | ф. Рабочая поверхность | пр. кн. на Классы; выбр. Создание класс ►

ф. Мастер создания класса | Укажите имя Класса ← Person;

Введите описание данного Класса ← описание участников учебного процесса;

кн. Далее ► ф. Тип класса ← Persistent (может храниться в базе данных);

кн. Далее ► Имя таблицы SQL ← Person; кн. Готово ►

ф. _SYSTEM-CACHEWEB/USER/User.Person.cls с кодом создания класса

5. Определить свойства класса Person

– задать свойство persID (идентификатор персоны, уникальное число):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Person;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← persID;

Введите описание нового свойства ← Идентификатор персоны; кн. Далее ►

ф. Тип свойства | уст. Единичное значение типа ← %Counter; кн. Далее ►

ф. Характеристики свойства | уст. Это свойство обязательное (не пустое);

Индексируемое. Создать индекс для этого свойства;

Уникально. Создать уникальный индекс для этого свойства;

имя поля для SQL ← persID; кн. Готово ►

– задать свойство fam (фамилия персоны, текстовое, до 20 символов):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Person;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← fam;

Введите описание нового свойства ← Фамилия персоны; кн. Далее ►

ф. Тип свойства | уст. Единичное значение типа ← %String;

кн. Далее ►ф. Характеристики свойства | уст. Это свойство обязательное (не пустое);

имя поля для SQL ← fam; кн. Далее ►ф. Параметры свойства |

MAXLEN ← 20; кн. Готово ►

– аналогичным образом создать свойства im (имя) и ot (отчество).

6. Создать подкласс Student (Студент) родительского класса Person:

ф. Studio | ф. Рабочая поверхность | Классы | User | пр. кн. на Person;

выбр. Создание подкласса… ► ф. Мастер создания Класса |

Укажите имя Класса ← Student;

Введите описание данного Класса ← Данные студентов; кн. Далее ►

ф. Тип класса ← Расширения: Имя СуперКласса ← User.Person; кн. кн. Готово ►

ф. _SYSTEM-CACHEWEB/USER/User.Student.cls с кодом создания класса

7. Определить свойства класса Student:

– задать свойство noZK (номер зачетной книжки, ровно 6 символов):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Student;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← noZK;

Введите описание нового свойства ← Номер зачетной книжки; кн. Далее ►

ф. Тип свойства | уст. Единичное значение типа ← %String; кн. Далее ►

ф. Характеристики свойства | уст. Это свойство обязательное (не пустое);

Уникально. Создать уникальный индекс для этого свойства;

имя поля для SQL ← noZK; кн. Далее ►ф. Параметры свойства | MINLEN ← 6;

MAXLEN ← 6; кн. Готово ►

– задать свойство spec (название специальности, до 7 символов):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Student;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← spec;

Введите описание нового свойства ← Название специальности; кн. Далее ►

ф. Тип свойства | уст. Единичное значение типа ← %String; кн. Далее ►

ф. Характеристики свойства | уст. Это свойство обязательное (не пустое);

имя поля для SQL ← spec; кн. Далее ►ф. Параметры свойства | MAXLEN ← 7;

кн. Готово ►

– задать свойство gr (номер группы, число от 1 до 99):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Student;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← gr;

Введите описание нового свойства ← Номер группы; кн. Далее ►

ф. Тип свойства | уст. Единичное значение типа ← %Integer; кн. Далее ►

ф. Характеристики свойства | уст. Это свойство обязательное (не пустое);

имя поля для SQL ← gr; кн. Далее ►ф. Параметры свойства |

MAXVAL ← 99; MINVAL ← 1; кн. Готово ►

– задать свойство kurs (название специальности, до 7 символов):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Student;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← kurs; Введите описание нового свойства ← Курс;

кн. Далее ►ф. Тип свойства | уст. Единичное значение типа ← %Integer;

кн. Далее ►ф. Характеристики свойства | уст. Это свойство обязательное (не пустое);

имя поля для SQL ← kurs; кн. Далее ►ф. Параметры свойства | MAXVAL ← 6;

MINVAL ← 1; кн. Готово ►

– задать свойство data_r (дата рождения):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Student;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← data_r;

Введите описание нового свойства ← Номер зачетной книжки; кн. Далее ►

ф. Тип свойства | уст. Единичное значение типа ← %Date;

кн. Далее ►ф. Характеристики свойства | не уст.

Это свойство обязательное (не пустое); имя поля для SQL ← data_r; кн. Готово ►

– задать свойство biogr (биография):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Student;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← biogr;

Введите описание нового свойства ← Биография; кн. Далее ►

ф. Тип свойства | уст. Единичное значение типа ← %Text;

кн. Далее ►ф. Характеристики свойства |

не уст. Это свойство обязательное (не пустое); имя поля для SQL ← biogr;

кн. Готово ►

8. Определить первичный ключ класса Person:

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Person;

панель инструментов | кн. Новый индекс ► ф. Мастер создания Индекса |

Выберите имя Индекса ← pkPerson; кн. Далее ► ф. Тип индекса |

уст. Это первичный ключ для класса; кн. Далее ► ф. Свойства индекса;

кн. Атрибут (правый верхний угол) ► ф. Атрибут | Свойство ← id; кн. OK ►

ф. Свойства индекса; кн. Далее ► ф. Данные индекса | выбр. id; кн. [>]; кн. OK

9. Создать уникальный индекс fio класса Person:

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Person;

панель инструментов | кн. Новый индекс ► ф. Мастер создания Индекса |

Выберите имя Индекса ← UniqueFIO; кн. Далее ► ф. Тип индекса |

уст. Это уникальный индекс; кн. Далее ► ф. Свойства индекса;

кн. Атрибут (правый верхний угол) ► ф. Атрибут | Свойство ← fam; кн. OK ►

ф. Свойства индекса; кн. Атрибут (правый верхний угол) ► ф. Атрибут |

Свойство ← im; кн. OK ► ф. Свойства индекса;

кн. Атрибут (правый верхний угол) ► ф. Атрибут | Свойство ← ot; кн. OK ►

ф. Свойства индекса; кн. Далее ►

ф. Данные индекса | выбр. fam; кн. [>];выбр. im; кн. [>]; выбр. ot; кн. [>]; кн. OK

10. Создать метод Report класса Person, выводящий на экран значения фамилии, имени и отчества:

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Person;

панель инструментов | кн. Новый метод ► ф. Мастер создания Метода |

Укажите имя нового Метода ← Report; кн. Далее ► ф. Подпись метода; кн. Далее ►

ф. Характеристики метода; уст. Class Method; кн. Далее ► ф. Реализация; ввести код:

write "Фамилия"_..fam write ! write "Имя"_..im write !

write "Отчество"_..ot write !

кн. Готово

11. Сохранить все изменения:

Файл | Сохранить все

12. Выполнить компиляцию классов:

ф. Studio | ф. Рабочая поверхность | Классы | User | пр. кн. на Person;

выбр. Компиляция 'Person' ► ф. Вывод – Компиляция успешно завершена

аналогичным образом – для класса Student;

13. Аналогичным образом создать класс Subject (справочник предметов) со свойствами:

– Идентификатор предмета predmID (числовое, обязательное, первичный ключ)

– Название name (название предмета (текстовое, обязательное));

– Цикл cycle (цикл дисциплин, к которым относится предмет (текстовое,

обязательное));

– Объем hrs (количество часов (числовое, обязательное));

– Кафедра dept (название кафедры, на которой ведется преподавание предмета

(текстовое, необязательное)).

– указать первичный ключ класса Subject;

– определить метод Report для вывода информации о предмете.

14. Создать класс Uspev (успеваемость студентов по предметам):

ф. Studio | ф. Рабочая поверхность | пр. кн. на Классы; выбр. Создание класс ►

ф. Мастер создания класса | Укажите имя Класса ← Uspev;

Введите описание данного Класса ← Успеваемость студентов; кн. Далее ►

ф. Тип класса ← Persistent (может храниться в базе данных); кн. Далее ►

Имя таблицы SQL ← Person; кн. Готово ►

ф. _SYSTEM-CACHEWEB/USER/User.Uspev.cls с кодом создания класса

15. Определить свойства класса Uspev:

– задать свойство student (ссылка на класс Student):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Uspev;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← student;

Введите описание нового свойства ← Название специальности; кн. Далее ►

ф. Тип свойства | уст. Единичное значение типа ← Student; кн. Далее ►

ф. Характеристики свойства | уст. Это свойство обязательное (не пустое);

имя поля для SQL ← student; кн. Готово ►

– аналогичным образом задать свойство predmet (ссылка на класс Subject)

– задать свойство ocenka (оценка, число от 2 до 5):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Uspev;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← ocenka;

Введите описание нового свойства ← Оценка; кн. Далее ►ф. Тип свойства |

уст. Единичное значение типа ← %Integer; кн. Далее ►ф. Характеристики свойства |

уст. Это свойство обязательное (не пустое); имя поля для SQL ← kurs; кн. Далее ►

ф. Параметры свойства | MAXVAL ← 5; MINVAL ← 2; кн. Готово ►

– задать свойство data (дата получения оценки):

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Uspev;

панель инструментов | кн. Новое свойство ► ф. Мастер создания свойств |

Укажите имя нового свойства ← data;

Введите описание нового свойства ← дата получения оценки; кн. Далее ►

ф. Тип свойства | уст. Единичное значение типа ← %Date; кн. Далее ►

ф. Характеристики свойства | не уст. Это свойство обязательное (не пустое);

имя поля для SQL ← data; кн. Готово ►

– определить составной первичный ключ класса Uspev (свойства student и predmet).

16. Связать классы, сделав классы студентов и предметов родительскими, а класс успеваемости – дочерним:

ф. Studio | ф. Рабочая поверхность | Классы | User | выделить Uspev;

панель инструментов | кн. Новый Внешний Ключ ►

ф. Мастер создания Внешнего Ключа |

Укажите имя для нового внешнего ключа ← FKUspevSubjects; кн. Далее ►

ф. Атрибуты | выбр. Predmet; кн. [>]; кн. Далее ► ф. Создание ключа |

Класс ← User.Subject; Индекс ← PKSubjects; кн. Готово

аналогичным образом связать классы Uspev и Student.

Б. Экземпляры классов

1. Создать экземпляры классов Student (не менее 3), Subject (не менее 2) и Uspev (не менее 7). Проверить работоспособность ограничений значений полей, уникальности и др., предусмотренные при задании структуры классов:

– запустить терминал Cache

Пуск | Программы | Cache | Cacheweb | Studio ► ф. Терминал

– создать экземпляр класса Student:

после приглашения на ввод USER> ввести код:

Set student=##class(User.Student).%New()

нажать клавишу [Enter] ►если нет сообщения об ошибке, то экземпляр создан

– присвоить свойству id экземпляра класса Student значение "1":

после приглашения на ввод USER> ввести код:

set student.id=1

нажать клавишу [Enter] ►если нет сообщения об ошибке, то значение присвоено

– присвоить свойству fam экземпляра класса Student значение "Фамилия":

после приглашения на ввод USER> ввести код:

set student.fam="Фамилия"

нажать клавишу [Enter] ►если нет сообщения об ошибке, то значение присвоено

аналогичным образом присвоить значения остальным свойствам экземпляра класса

– одному из свойств экземпляра класса Student присвоить заведомо некорректные данные:

после приглашения на ввод USER> ввести код:

set student.kurs=9

нажать клавишу [Enter] ►

отобразить сообщение об ошибке:

после приглашения на ввод USER> ввести код:

do $system.OBJ.DisplayError()

нажать клавишу [Enter] ►сообщение об ошибке на экране

– отобразить значения свойств экземпляра класса Student:

после приглашения на ввод USER> ввести код:

write student.fam

нажать клавишу [Enter] ►если нет сообщения об ошибке, то результат на экране

аналогичным образом вывести значения остальных свойств экземпляра

– сохранить экземпляр класса Student:

после приглашения на ввод USER> ввести код:

do student.%Save()

нажать клавишу [Enter] ►если нет сообщения об ошибке, то экземпляр сохранен.

– освободить переменную student:

после приглашения на ввод USER> ввести код:

kill student

нажать клавишу [Enter] ►если нет сообщения об ошибке,

то переменная освобождена.

аналогичным образом создать остальные экземпляры класса Student и Subject.

– загрузить в переменную st экземпляр класса Student (индекс = 1):

после приглашения на ввод USER> ввести код:

set st = ##class(User.Student).%OpenId(1)

нажать клавишу [Enter] ►переменная создана

– вывести данные студента с помощью метода Report:

после приглашения на ввод USER> ввести код:

do st.Report()

нажать клавишу [Enter] ►результаты на экране

– загрузить в переменную p экземпляр класса Subject (индекс = 1):

после приглашения на ввод USER> ввести код:

set st = ##class(User.Subject).%OpenId(1)

нажать клавишу [Enter] ►переменная создана

– создать экземпляр класса Uspev:

после приглашения на ввод USER> ввести код:

Set uspev=##class(User.Uspev).%New()

нажать клавишу [Enter] ►если нет сообщения об ошибке, то экземпляр создан

– присвоить свойству student экземпляра класса Uspev значение из переменной st:

после приглашения на ввод USER> ввести код:

set uspev.student=st

нажать клавишу [Enter] ►если нет сообщения об ошибке, то значение присвоено

аналогичным образом присвоить значения оставшимся свойствам класса и создать оставшиеся экземпляры класса Uspev.

В. Cache Server Pages

1. Создать статическую CSP-страницу в Cache Studio:

– создать новую CSP-страницу:

ф. Studio | ф. Рабочая поверхность | пр. кн. на CSP файлы;

выбр. Создание CSP файл ► ф. _SYSTEM-CACHEWEB/User/Untitled1.CSP

заменить код

My page body

на Добро пожаловать в Cache Server Pages!

– скомпилировать CSP-страницу

ф. Studio | ф. Рабочая поверхность | раскр. CSP файлы; пр. кн. на Untitled1.CSP;

выбр. Компиляция 'Untitled1.CSP' ► ф. Сохранить как | выбр. CSP/USER;

Имя файла ← static.CSP; кн. Сохранить как ► ф. Результат |

Компиляция успешно завершена

– проверить работоспособность страницы:

ф. Studio | ф. Рабочая поверхность | раскр. CSP файлы; пр. кн. на static.CSP;

выбр. Показать веб-страницу ► окно браузера с загруженной страницей

2. Создать динамическую CSP-страницу в Cache Studio:

– создать новую CSP-страницу:

ф. Studio | ф. Рабочая поверхность | пр. кн. на CSP файлы;

выбр. Создание CSP файл ► ф. _SYSTEM-CACHEWEB/User/Untitled1.CSP

заменить код

My page body

на <h1>Сведения о студентах</h1>

– выполнить запрос к базе данных (класс Student, отображенный в одноименную таблицу):

ф. Studio | ф. Рабочая поверхность | ф. _SYSTEM-CACHEWEB/User/Untitled1.CSP

ввести код

<script language="SQL" name="StudentsInfo">

SELECT id, fam, im, ot, spec, kurs, gr FROM SQLUser.Student

</script>

– определить HTML-разметку таблицы для отображения результатов запроса:

ф. Studio | ф. Рабочая поверхность | ф. _SYSTEM-CACHEWEB/User/Untitled1.CSP

ввести код

<table border="1"> <tr> <td>ID</td> <td>Фамилия</td> <td>Имя</td>

<td>Отчество</td>

<td>Специальность</td> <td>Курс</td> <td>Группа</td> </tr> </table>

– построить цикл по результату запроса для отображения строк таблицы:

ф. Studio | ф. Рабочая поверхность | ф. _SYSTEM-CACHEWEB/User/Untitled1.CSP

ввести код:

<CSP:WHILE CONDITION="StudentsInfo.Next()"> <tr> <td>#(StudentsInfo.Data("id"))#</td> <td>#(StudentsInfo.Data("fam"))#</td> <td>#(StudentsInfo.Data("im"))#</td>

<td>#(StudentsInfo.Data("ot"))#</td>

<td>#(StudentsInfo.Data("spec"))#</td> <td>#(StudentsInfo.Data("kurs"))#</td> <td>#(StudentsInfo.Data("gr"))#</td> </tr> </CSP:WHILE>

– скомпилировать CSP-страницу и проверить ее работоспособность.

Аналогичным образом запрограммировать динамические страницы для отображения данных о предметах (код, название, цикл, объем и кафедра) и успеваемости студентов (фамилия, специальность и группа студента, название предмета, оценка и дата ее получения).

Соседние файлы в папке BDlab