Do ##class(Classname).MethodName(arglist)



Set value = ##class(Classname).MethodName(arglist)

где Classname это имя класса с подходящим методом, MethodName это имя метода выполнения, arglist это список аргументов, передаваемых методу. Value это переменная, получающая значение, возвращаемое методом.

Имя класса может содержать имя пакета. Например, вызов метода PurgeAll класса ReportCard:

Do ##class(MyApp.ReportCard).PurgeAll()

где MyApp – это имя пакета.

Аналогично, можно выполнить метод Exists класса %File, который определяет, существует ли файл, используя следующий код:

Set exists = ##class(%File).Exists("\temp\file.txt")

где exists равно true (1), если файл существует, или false (0), если такого файла нет.

 
Виды методов В объектной модели 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() Будет сгенерирован следующий код: Write "Woof, Woof" Неплохо было бы назначить формальным параметрам метода-выражения значения по умолчанию. Тогда не нужно было бы их назначать во время выполнения. Метод-вызов – вызывает существующую программу Caché. Как правило, такие вызовы используются для того, чтобы инкапсулировать существующий код в объектно-ориентированный проект. Определение метода как метода-вызова указывает, что при вызове метода вызывается специальная подпрограмма. Синтаксисметодавызова: Method Call() [ CodeMode = call ] { Tag^Routine } где "Tag^Routine" задает имя метки Tag внутри подпрограммы Routine. Генераторы методов – особые методы, содержащие код для порождения кода на языке Caché Object Script. Они используются во время компиляции классов для генерации версии метода времени выполнения. При этом они могут обращаться к параметрам класса для выбора подходящего варианта генерации кода.

Мастер создания методов
Мастер создания метода позволяет с легкостью создать определение метода и тут же наполнить его содержанием.

Введите имя нового метода. Помните, что каждое имя метода может встречаться в определении класса не более одного раза. Имена, начинающиеся со знака (%), зарезервированы для системных классов Cache.

В следующем поле вы можете ввести описание метода, при желании, используя теги HTML. Здесь настоятельно рекомендуется подробно описать сам метод и его назначение.

Следующая панель позволяет описать интерфейс метода, а именно, количество, имена и типы его аргументов и возвращаемого значения.

Поле Тип возврата оснащено кнопкой Поиск, позволяющей выбрать тип данных возвращаемого значения метода. Допустимым является любой тип данных Cache. Достаточно часто используется %status для того, чтобы вернуть информацию об успехе или неудаче выполнения.

Список аргументов метода поначалу пуст. Сюда заносятся аргументы метода. Новый аргумент добавляется щелчком по значку «пунктирный прямоугольник с желтой лампочкой»; щелчком по значку «косой красный крест» выделенный аргумент удаляется. Стрелки служат для того, чтобы перемещать выделенный аргумент в начало или в конец списка.

Двойной щелчок по аргументу открывает дочернее окно определения аргумента. Имя представляет собой имя формального аргумента, под которым он будет использоваться внутри метода. В поле Тип указывается тип данных аргумента, в следующем поле — Default — можно установить его значение по умолчанию и, наконец, в секции Передача выбрать между по Ссылке и по Значению.

В панели Характеристики находятся четыре флажка, позволяющие уточнить некоторые характеристики метода.

Флаг Final (финальный) помечают для того, чтобы запретить переопределение метода в подклассах.

Флаг Class Method устанавливает принадлежность метода к методам класса. В отличие от методов экземпляров, он не относится к конкретному экземпляру класса, а значит, может использоваться без образования экземпляров класса.

Флаг Хранимая процедура имеет смысл лишь для методов класса, указывая на то, что метод может вызываться через SQL как хранимая процедура.

И, наконец, поле Язык позволяет выбрать язык, на котором будет программироваться метод. Выбирать можно между basic, cache и Java (по умолчанию — cache).

Теперь можно заняться реализацией метода на выбранном языке программирования. Для выхода из метода на Cache ObjectScript с возвратом значения используется команда Quit.

Параметры класса

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

Значения параметров класса наследуются и могут перекрываться в производных классах, либо пополняться дальнейшими параметрами класса.

Например:

Например, класс MyApp.A имеет параметр XYZ со значением 100

Class MyApp.A
{ Parameter XYZ = 100; }

Подкласс MyApp.B может перекрыть значение этого параметра.

Class MyApp.B Extends MyApp.A
{ Parameter XYZ = 200; }

Параметры класса обычно используются при компиляции с участием генераторов методов. Генератор метода использует параметр класса с целью управления ходом генерации, например для конкретизации поведения типов данных.

Параметр класса имеет специальное поведение, когда используется с классами типов данных. С классом типов данных, параметр класса используется для обеспечения способа изменения поведения типа данных.

Например, класс типа данных %Integer имеет параметр класса MAXVAL, который определяет максимальное значение для свойства типа %Integer. Определим класс со свойством NumKids следующим образом:

Property NumKids As %Integer (MAXVAL=10);

Это означает, что параметр MAXVAL для класса %Integer должен быть установлен равным 10 для свойства NumKids.

Это работает следующим образом: методы проверки для классов типов данных все реализованы в виде генераторов методов и используют параметры классов для контроля генерации методов. В этом примере, это определение свойства генерирует код метода NumKidsIsValidDT, который проверяет, превышает ли значение свойства NumKids число 10. Без использования параметров класса для подобной функциональности потребуется создать определение класса IntegerLessThanTen.

У любого зарегистрированного класса имеется параметр класса PROPERTYVALIDATION. Он указывает должны или нет проверяться значения свойств, и если да, то когда именно:

· 0 – означает отсутствие проверки

· 1 – предполагает проверку в момент присваивания значения.

· 2 (по умолчанию) – означает проверку при сохранении.

При каждом изменении этого параметра, сопровождаемом перекомпиляцией, генераторы методов вставляют соответствующий код проверки значений свойств каждый раз в подходящее место. Таким образом, параметры класса служат для согласования поведения класса с конкретными потребностями данного приложения.


Дата добавления: 2018-05-12; просмотров: 230; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!