![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Справка ⇐ ПредыдущаяСтр 4 из 4
При выполнения были изучены основы языка Cache` Object Script и использованы следующие команды и операторы: · для ввода данных команду read, · для вывода - write, · для присвоения значения переменной - set, · для вызова процедуры - do, · для организации циклов - for или while, · для задания условия блок - if { } else { }, · для выходя из процедуры - quit, · для конкатенации - оператор " _". Для создания процедур можно использовать встроенные методы: · %New() - создать объект, · %Save() - сохранить объект в базе, · %OpenId() - открыть объект, хранящийся в базе, по его идентификатору, · %DeleteId() - удалить объект из базы данных, · SetAt() - сохранить значение элемента массива, · GetAt() - извлечь значение элемента массива. Для обращения к базе данных можно использовать класс %ResultSet и его методы: · Prepare() - подготовить запрос, · Execute() - выполнить запрос, · Next() - извлечь строку из результата запроса, · Data() - получить значение поля в текущей строке. Для работы с глобалами можно использовать функции: · $Get - получить значение глобала, · $Order - получить очередной в последовательности глобал, · $Data - проверить существование глобала.
Исходный код приложения Cache` оформляется в виде проекта. Проект может содержать следующие компоненты: классы, программы, CSP-файлы. Можно создавать новые проекты, открывать и изменять существующие. Также существует возможность добавления или удаления компонентов из проекта. Класс в Caché Studio можно создать вручную (используя конструкции UDL), или автоматически (используя Class Wizard). Для вызова мастера необходимо выбрать пункт меню Файл - Создать, нажать комбинацию клавиш Ctrl-n или кликнуть на значок панели «Стандартная». В появившемся окне необходимо выбрать элемент проекта, который нужно создать - в данном случае класс Caché (рис. 5). Рис. 5 - Окно создания элементов проекта Выбираем «Класс Caché» и нажимаем OK. На экране открывается окно с первым шагом создания класса. На первом этапе мастера (рис. 6) указываются общие сведения о создаваемом класс - имя пакета, имя класса и комментарий (опционально). Если определенного пакета еще не существует в БД, тогда Caché создает новый пакет автоматически. Отмечаем имя пакета - «USER», имя класса - «Book» и комментарий - «общие сведения о книге». Пример: Отобразить запрос на ввод и ввести с консоли имя сотрудника, название компании и должность. Код программы выглядит так: write!, " Завершение ввода происходит по двойному нажанию на 'Enter' ",! Команда write выведет сообщение на экран монитора. Восклицательный знак выполняет переход на новую строку. Далее организован цикл с помощью безаргументной формы команды for, в которой нет ни переменной цикла, ни начального, ни конечного значения. Команда read выдаст подсказку пользователю о том, что необходимо ввести, и введет ответы пользователя в переменные Name, CompanyName, Post. Далее идет постусловная конструкция вида: quit: < условие>. Команда quit выполнится, если истинно условие.
Пункт 2 Пример: Создим новый объект класса " Руководитель", если должность " руководитель" или объект класса " Сотрудник" в противном случае. Определить поля объекта: имя и должность. Основной синтаксис для создания новых экземпляров объектов - это использование метода класса %New: set oref = ##Class(ClassName).%New() , где oref - ссылка OREF на новый объект, ClassName - это имя класса, чувствительно к регистру букв и может содержать имя пакета, ##Class() - это макровызов, который используется для вызова методов класса. В нашем случае необходимо создать объект класса " Руководитель", если должность " руководитель". Для этого используется конструкция if: if (Post=" руководитель"){code} else {code} В блоке кода создается новый объект: set NewWM = ##Class(User.Manager).%New() Далее идет строка, необходимая для указания даты и время назначения сотрудника, если он является руководителем. Используется системная переменная $Horolog, которая содержит текущее время в виде пары чисел: первое число задает внутренний формат даты, второе число задает количество секунд, прошедших с полуночи. Второй аргумент функции $ZDateTime - это формат возвращаемой даты. Создание объекта класса " Сотрудник" в блоке кода else: set NewWM = ##Class(User.Worker).%New() Полностью эта часть кода выглядит так: if (Post=" руководитель")
Пункт 3 Пример: Используя запрос SQL, получим ссылку на компанию с указанным названием и присвоим эту ссылку полю компания. Используем объект класса %ResultSet для подготовки динамического SQL-запроса: set rset = ##class(%ResultSet).%New(" %DynamicQuery: SQL") Метод Prepare - подготавливает (компилирует) запрос для выполнения, метод Execute - выполняет запрос. Присвоение ссылки идет в теле конструкции if в блоке кода else: set CompanyID = rset.Data(" ID")
Пункт 4 Пример: Если компании с указанным названием не существует, то введем с консоли по запросу город, улицу и номера, создать новый объект класса компания, вызвав соответствующий метод класса.Присвоим ссылку на компанию объекту сотрудника из п.2. Код этой части программы выглядит следующим образом: if 'rset.Next() //проверяем, имеет ли набор данные set Company = ##class(User.Organization).CreateOrganization(CompanyName, City, Street, Numberz) Рассмотрим пояснения к тексту программы. Конструкция вида: do означает, что ввод производится до тех пор, пока введенные данные не будут соответствовать шаблону ("? " - оператор соответствия шаблону). Создаем новый объект класса " компания", вызвав соответствующий метод класса: set Company = ##class(User.Organization).CreateOrganization(CompanyName, City, Street, Numberz) Пояснение блока кода else смотрите выше в п.3. Присваиваем ссылку на компанию объекту сотрудника из п.2: set NewWM.WorkerOrganization = Company
Пункт 5 Пример: Сохранить новый объект " Сотрудник" (или " Руководитель") в базе данных. Для этого используется конструкция: do NewWM.%Save() Объединим все части и посмотрим листинг этой программы полностью. Листинг программы write!, " Завершение ввода происходит по двойному нажанию на 'Enter' ",! if (Post=" руководитель") Теперь в среде Cache` Terminal посмотрим, как эта программа работает. Аналогично создаются остальные классы. Для создания новых свойств в Caché Studio используется мастер свойств. Его можно вызвать из меню «Класс» -> «Добавить» -> «Новое свойство», или нажав на следующую пиктограмму на панели «Члены». Первый шаг мастера (рис. 9) создания свойства заключается в заполнении общей информации о свойстве: имя свойства - «name» и комментария - «название книги» (опционально). Рис. 9 – Первый шаг
На втором шаге (рис. 10) предлагается выбрать вид свойства - атомарное свойство (т.е. свойство типа% String, % Number, собственный тип и т.п.), коллекция или отношения. Рис. 10 - Второй шаг мастера создания атомарного свойства
Рис. 11 - Третий шаг мастера создания атомарного свойства
На третьем шаге мастера (рис. 11) предлагается определить следующие характеристики свойства: - Required - обязательное свойство; - Indexed - проиндексирована свойство; - Unique - уникальные значения в свойства; - Calculated - данное свойство будет рассчитываться и ее значение не сохраняется в БД, а рассчитывается на основе значений других свойств; - Sql field name - служит для определения имя свойства в SQL запросе. На четвертом шаге мастера (рис. 12) определяются параметры свойства, с помощью которых можно, например, контролировать допустимые значения свойства. Пятый шаг мастера (рис. 13) дает возможность определить собственные методы работы со значением свойства, такие как Get и Set.
Рис. 12 - Четвертый шаг мастера создания атомарного свойства
Рис. 13 - Пятый шаг мастера создания атомарного свойства
Завершаем работу мастера нажатием кнопки «Готово». В результате работы мастера получаем выражение: /// название книги Property name As %String; Аналогично создаются другие свойства-константы, ссылки на объекты, встроенные объекты, потоки данных. В случае создания ссылки на объект или встроенного объекта на втором шаге мастера необходимо выбрать категорию Persistent, или ту, к которой относится необходимый класс, и найти в ней соответствующий пакет и класс рис. 14). Рис. 14 - Второй шаг мастера создания ссылки на объект (встроенного объекта)
В случае, если нужно создать свойство-коллекцию, то на втором шаге мастера нужно выбрать вид свойства «Коллекция типа» и необходимый тип коллекции, а также выбрать класс, к которому будут принадлежать все элементы данной коллекции (рис. 15). Для создания свойства-отношения на втором шаге мастера необходимо выбрать вид свойства - отношение (рис. 16). На третьем шаге мастера необходимо выбрать вид ссылки (one, many, parent, children), выбрать класс, с которым будет устанавливаться отношение, и выбрать поле в выбранном классе, в котором будут храниться данные, по отношению (рис. 17). На четвертом шаге мастера Caché предлагает: - Создать класс, с которым мы хотим установить отношения, если он еще не существует; - Создать свойство в которой будет храниться отношение, если она еще не существует; - Если свойство существует, ее тип изменяется; - Создать индекс для свойства. В результате работы получим следующие изменения в классе Book: /// перелік кодів УДК Relationship udk As USER.Code [ Cardinality = many, Inverse = id ]; И последующие изменения в классе Code: Relationship id As USER.Book [ Cardinality = one, Inverse = udk ];
Рис. 15 - Второй шаг мастера создания свойства-коллекции массива
Рис. 16 - Второй шаг мастера создания свойства-отношения
Рис.17 - Третий шаг мастера создания свойства-отношения
|