Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Объектно-ориентированные ИС (Моор).doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Виды методов

В объектной модели Caché различают четыре разновидности методов. Рассмотрим первые два из них

  • метод-код

  • метод-выражение

Метод-код – содержит код, написанный на языке Caché Object Script. Это просто реализация метода в виде строк кода. Этот вид метода является видом по умолчанию. Например, следующий метод определяет код метода Speak для класса Dog:

Class MyApp.Dog Extends %Persistent [ClassType = persistent]

{

Method Speak() As %String

{

Quit "Woof, Woof"

}

}

Метод-код может содержать любой правильный код на Caché ObjectScript, включая встроенный SQL и HTML, или код на Basic, в зависимости от ключевого слова. При вызове метода используется ссылка на экземпляр:

Write dog.Speak() // выдаст: Woof, Woof

Метод-выражение – содержит выражение на языке Caché Object Script. Передача параметров по ссылке недопустима. Не может содержать макросы, встроенный SQL, встроенный HTML. При компиляции программы все вызовы метода заменяются этим выражением. Обычно используется для простых методов, которые, например, присутствуют в классах типов данных, когда требуется быстрая скорость вычисления выражений. Например, можно конвертировать метод Speak класса из предыдущего примера в метод-выражение:

Method Speak() As %String [CodeMode = expression]

{ "Woof, Woof" }

Этот метод можно вызывать так:

Write dog.Speak()

4.12. Запросы

Предоставляют в распоряжение разработчика операции с множествами экземпляров классов. Можно считать, что запросы образуют для объектов класса некий фильтр.

Запросы можно формулировать либо на языке Caché Object Script, либо на SQL. Результат запроса становится доступен через ResultSet – специальный интерфейс для обработки результатов запроса в прикладных программах, написанных на языке Caché Object Script, или на любом другом с использованием ActiveX, либо на языке Java. Кроме того, запросы могут быть представлены в виде хранимых процедур SQL или же представлений(View), а значит, далее обрабатываться средствами SQL.

4.13. Пакеты

Пакет это простой способ группирования взаимосвязанных классов под общим именем. Например, приложение может иметь систему счетов: “Accounting” и систему вложений: “Inventory”. Классы, реализованные в этом приложении, могут быть организованы в пакеты “Accounting” и “Inventory”.

На каждый из этих классов можно ссылаться, используя полное его полное имя, которое состоит из имени пакета и имени класса:

Do ##class(Accounting.Invoice).Method()

Do ##class(Inventory.Item).Method()

Если имя пакета может быть определено из контекста, то имя пакета может быть опущено:

Do ##class(Invoice).Method()

Пакет это просто соглашение об именах: он не обеспечивает никакой другой функциональности, кроме именования класса. Так же как и класс, определение пакета существует внутри рабочей области Caché. Рабочая область Caché это логическое представление данных, как правило, одной базы данных.

Имя пакета

Имя пакета это просто строка. Оно может содержать точку “.”, но больше никакой другой пунктуации. Например, полное имя класса “Test.Subtest.TestClass” означает, что «TestClass» это имя класса, а “Test.Subtest” это имя пакета. В схеме базы данных в SQL имя будет преобразовано к виду: “Test_TestClass”.

Определение пакетов

Пакеты подразумеваются при именовании классов. Самый простой способ создания пакета – задать его имя при создании нового класса в Caché Studio с использованием мастера, в котором также можно просмотреть список всех пакетов. При удалении последнего класса пакета, сам пакет автоматически удаляется.

Использование пакетов

Существует два пути использования имени класса:

  • использование полного имени класса вместе с именем пакета. Например: пакет.класс

  • использование короткого имени класса, позволив компилятору классов самому решать какому пакету будет принадлежать класс.

Пакеты и SQL

Каждый пакет соответствует SQL схеме. Например, если класс называется Team.Player (класс Player в пакете “Team”), соответствующая таблица называется “Team.Player” ( таблица Player в схеме “Team”).

Пакет по умолчанию “User” соответствует схеме “SQLUser”. Следовательно, класс с именем User.Person соответствует таблице с именем SQLUser.Person.

Если имя пакета содержит точку, то она заменяется подчерком. Например: класс MyTest.Test.MyClass (класс MyClass, пакет “MyTest.Test”) становится таблицей

MyTest_Test.MyClass (MyClass – таблица, “MyTest_Test” – схема).

Схема по умолчанию SQLUser. Например:

Select ID, Name from Person

// То же самое что и:

Select ID, Name from SQLUser.Person

Резюме

Объектная модель Caché разработана в соответствие со стандартом ODMG (Object Data Management Group). Класс – это некий шаблон, в соответствии с которым строятся конкретные экземпляры класса. Объект в Caché имеет определенный тип, т.е. является экземпляром какого-либо класса.

Состояние объекта задают значения его свойств, поведение объекта задают его методы (операции).

В Caché реализовано два типа классов:

  • классы типов данных (литералы).

  • классы объектов (объекты).

Классы типов данных подразделяются на два подкласса типов:

  • атомарные.

  • структурированные.

Классы объектов подразделяются на:

  • незарегистрированные

  • зарегистрированные.

Объектная модель Caché в полном объеме поддерживает все основные концепции объектной технологии:

  • наследование. Объектная модель Caché позволяет наследовать классы от произвольного количества родительских классов;

  • полиморфизм. Объектная модель Caché позволяет создавать приложения целиком и полностью независимыми от внутренней реализации методов объекта;

  • инкапсуляция. Объектная модель Caché обеспечивает сокрытие отдельных деталей внутреннего устройства классов от внешних по отношению к нему объектов или пользователей;

  • хранимость. Система Caché поддерживает несколько видов хранения объектов: автоматическое хранение в многомерной базе данных Caché; хранение в любых структурах, определенных пользователем; хранение в таблицах внешних реляционных баз данных, доступных через шлюз Caché SQL Gateway.

Класс объектов в Caché хранится в двух формах:

  • описательная форма. Поддерживается развитый язык описания классов объектов UDL (unified definition language), построенный на базе XML (extensible markup language).

  • объектная run-time форма. Использование класса возможно только после его компиляции в объектный код.