Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Имя класса. Правила идентификации





Потокы данных

Коллекции

Многомерные свойства

Отношение

1. Виды классов в Caché

 

Классы определения типов данных (не имеют экземпляров) (Data type)
Классы определения объектов
Не зарегистрированный (Нет встроенных функций типа %New, %Close …)
Зарегистрированный (Включает набор встроенных функций) Не является хранимым автоматически
Встраиваемый Хранится автоматически только в хранимом объекте
Хранимый Хранится автоматически  
Классы

 

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

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

Классы - типы данных (Data type)

Классы типов данных - специальные классы, определяющие допустимые значения констант и позволяют их контролировать. Такие классы не имеют независимой идентификации и от них не могут создаваться экземпляры. Они просто приписываются атрибутам объектов и определяют их значение.

Классы типов данных содержат заранее заданный набор методов проверки и преобразования значений атрибутов. Эти классы не могут содержать свойств.

Классы типов данных определяют допустимые значения констант (литералов) и позволяют их контролировать. Классы типов данных могут выступать как системные или предопределенные константы (%Integer, %String и т.д.), так и константы, определенные пользователем.



Невозможно создать экземпляр класса типов данных,что является главным отличием от классов объектов.

Каждый экземпляр (объект) класса имеет 2 уникальных идентификатора – OID и OREF. OID (object ID) уникально идентифицирует объект, в таблице размещения объектов БД, т.е. на физическом носителе, а OREF (object reference) уникально идентифицирует объект, который был подкачен из БД и находится в памяти компьютера.

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

Классы объектов определяют структуру данных и поведение объектов одного типа. Эти объекты называют экземплярами соответствующего класса, а создание объекта называют порождением экземпляра класса.

Каждый класс объектов имеет однозначное имя, свойства, методы и ключевые слова, определяющие общее поведение класса.

Незарегистрированные классы

Caché не осуществляет автоматического управления объектами незарегистрированных классов. Разработчик сам отвечает за назначение и поддержку уникальности идентификаторов объектов (OID) и объектных ссылок (OREF). Несмотря на то, что управление объектными ссылками не реализовано на уровне СУБД, незарегистрированные классе имеют следующие недостатки:

- Система не выделяет память для значений свойств объектов;

- Отсутствует автоматическая подкачка объектов, на которые делаются ссылки;

- Не поддерживает полиморфизм;

- Переменные, ссылающиеся на незарегистрированные объекты, должны быть явно задекларированные с указанием соответствующего класса.

Зарегистрированные классы (Registered)

Зарегистрированные классы объектов имеют полный набор методов управления поведением объектов в памяти.

Они автоматически следуют эти методы от системного класса% RegisteredObject. Экземпляры зарегистрированных классов существуют лишь временно в памяти процесса, поэтому их называют временными объектами. Создание новых объектов зарегистрированных классов и управление их размещением в памяти осуществляется Caché автоматически.

Пользователю предоставляется объектные ссылки (OREF), по которому можно сослаться на объект в памяти.

Зарегистрированные классы поддерживают полиморфизм.

Встраиваемые классы, (Serial)

Экземпляры классов встраиваемых могут храниться не только в памяти, но и в БД. Эти классы следуют свое поведение от системного класса % SerialObject. Главным в их поведении есть то, что их экземпляры в памяти существуют как независимые объекты, однако могут быть сохранены в БД только если они встроены в другие объекты.

Для поддержки этого функционала данные классы имеют следующие возможности:

- Создание строки символов отражает полное состояние объекта (значения всех его свойств): создание такой строки символов называется преобразованием объекта в последовательную форму или сериализация объекта;

- Автоматическое считывание этой последовательности сроки с БД и представление в памяти в виде самостоятельного объекта, автоматическая загрузка в память связанных объектов, называется подкачкой (swizzling)

Встроенные объекты представляются в памяти и в БД по-разному:

- В памяти встроенный объект существует как отдельный объект, который ничем не отличается от объектов других типов. Значение встроенного объекта в памяти - это объектная ссылка (OREF) на представление объекта в памяти;

- В БД встроенный объект сохраняется в последовательной форме, как часть объекта, в который он встроен. Внутри встроенного объекта отсутствует идентификатор (OID), и он не может использоваться другими объектами без объекта, который его содержит.

Хранимый класс (Persistent)

Классы объектов, хранящихся, имеют значительный функционал, обеспечивающий хранение их экземпляров в БД. Эти возможности наследуются от системного класса % Persistent. Экземпляры таких классов имеют однозначный объектный идентификатор (OID) и могут независимо храниться в Caché. Когда такой объект используется как свойство класса, то говорят о ссылках на сохраненный объект.

Хранимые классы наследуют свое поведение от класса %Persistent. Класс %Persistent предоставляет обширный набор функций своим наследникам, включающий создание объекта, подкачку объекта из БД в память, удаление объекта и т.д. Определимся с уникальной идентификацией объектов хранимых

Кроме рассмотренных типов классов также выделяют следующие атрибуты:

1. Abstract- абстрактный класс, не дает возможность создавать экземпляры такого класса, но может быть родительским классом.

2. Extends - класс, следует другой класс

Полный список элементов определения класса включает:

1. Общие характеристики класса

a. Имя класса (уникальное, со знака «%» начинаются имена системных классов);

b. Ключевые слова - модификаторы определения класса (persistent и т.д.);

Состав класса

a. Свойства класса - элементы данных для хранения в объектах;

b. Методы -код, реализующий поведение и функциональные возможности;

c. Параметры - значение, используются для настройки функциональных возможностей при компиляции описания класса;

d. Запросы- операции с множеством экземпляров класса;

e. Индексы - структуры для оптимизации использования экземпляров класса.

CSP - класс, используется для разработки web-приложений.

Имя класса. Правила идентификации

Каждый идентификатор должен быть уникален внутри своего контекста. Максимальные длины всех идентификаторов приведены в табл.:

Таблица

Идентификатор Ограничения
Имя пакета <=31 символ
Имя класса Ограничений на длину имени нет, но только первые 25 символов используются для идентификации класса.
Имя метода <=31 символ
Имя свойства <=31 символ
Другие члены класса <=128 символов

 

Внутри Caché имена преобразуются в верхний регистр, что следует учитывать при назначении имени. Идентификатор должен начинаться с буквы, но может содержать цифры. Не может содержать пробелы или знаки пунктуации, за исключением имен пакетов, которые могут содержать символ «.» (точку).

Идентификаторы, начинающиеся со знака %(процент) являются системными элементами. Например, многие методы и пакеты, обеcпечивающиеся библиотекой Caché, начинаются со знака «%».

 

Ключевые слова

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

Abstract– означает, что нельзя создать экземпляр данного класса, используется для

классов типов данных.

ClassType –определяет поведение класса. Допустимые значения: datatype, persistent,и serial.

Например:

1. ClassType = datatype – означает, что это класс типа данных.

2. ClassType = persistent – хранимый класс

3. ClassType =serial – сериализуемый класс

Final –означает, что это финальный класс, т.е. от него невозможно образование подклассов.

Super– задает один или несколько суперклассов для данного класса. По умолчанию класс не имеет суперкласса.

 

Свойства

Свойства представляют состояние объектов. Существует два типа свойств:

• Свойства, содержащие значения

• Свойства-связи, задающие связи между объектами.

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

 

Синтаксис:

Property <Имя свойства> as <тип> (параметры) [ключевые слова]

 

Примеры свойств, содержащих значения:

Property Total As %Float (SCALE = 2);

Property Description As %Library.String (MAXLEN = 300);

Property PlayingNow As %Library.Boolean [ InitialExpression = 1 ];

Property Rating As %Library.String (VALUELIST = ",G,PG,PG-13,R");

Property Pr As %String [ Required ];

Property SALARY As %Integer (MINVAL = "0", MAXVAL = "1000000");

Property SecretName As %String (MAXLEN = "20") [ Private, Required ];

 

Пример свойства связи:

Relationship Chapter As Chapter [Inverse = Book, Cardinality = Many];

 

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

Общие характеристики свойств:

- Свойства могут быть константами, ссылками на сохранившиеся объекты, встроенными объектами, потоками данных (BLOBs), коллекциями констант или объектов;

- Со свойствами непосредственно связан набор методов проверки и сохранения значений, выполняются автоматически;

- При предоставлении доступа к значениям свойств, а также при их сохранении можно изменять формат и выполнять другие преобразования данных;

- Объекты, на которые ссылаются, и встроенные объекты при обращении в соответствующие свойств автоматически загружаются в память.

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

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

Используются следующие ключевые слова:

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

Description –описание свойства, которое Caché использует для построения документации класса. Подклассами не наследуется.

Final– свойство, которое не может перекрываться в подклассах. По умолчанию, свойства не являются финальными. Наследуется подклассами.

InitialExpression– задает начальное значение для свойства. По умолчанию свойство не имеет начального значения. Наследуется подклассами и может перекрываться.

Private –задает свойство типа private. По умолчанию, свойства не является private. Наследуется подклассами и не может перекрываться.

Required –свойство должно получить значение перед сохранением на диске. По умолчанию свойства не являются required. Наследуется подклассами и может перекрываться.

Transient– определяет временное свойство, которое не сохраняется в базе данных. По умолчанию свойства не являются transient. Наследуется подклассами и не может перекрываться.

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

 

Видимость свойств

Свойства могут быть определены как открытые (public) или как закрытые (private). Если свойство является закрытой, она может быть использована только методами класса, к которому она принадлежит. Открытые свойства (какие они есть по умолчанию) могут применяться без ограничений. Закрытые свойства наследуются и внутри подклассов просматриваются.

В других языках программирования свойства с подобным поведением нередко называются защищенными (protected).

Поведение свойств

Со свойствами автоматически связано несколько методов. Эти методы не создаются простым наследованием. Более тoro, Caché располагает особый механизм для создания этих специальных методов свойств. Каждое свойство наследует свой набор методов от двух разных источников:

- От класса в зависимости от вида свойства, наследуется общее поведение. Это, например, методы доступа Get () и Set (), а также методы проверки;

- От класса типа данных (в зависимости от типа данных свойства) наследуется поведение - зависит от типа данных. Многие из этих методов являются генераторами методов, которые, например, позволяют задать минимальные и максимальные значения свойства целочисленного типа.

Все классы свойств - это системные классы. Их невозможно специфицировать и изменять их поведение, унаследованную от этих классов.

Виды свойств

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

Существует несколько видов свойств:

• Свойства типов данных

• Свойства ссылки на объекты

• Встроенные объекты

• Потоки данных

• Многомерные свойства

• Свойства коллекции

Типы данных свойств

Caché поддерживает неограниченное количество типов данных для свойств классов, причем каждый тип данных представляет собой класс.

Можно реализовать собственные типы данных (Advanced Data Types - ADTs), определяя соответствующие классы типов данных. Кроме того, классы типов данных управляют поведением свойств объектов, когда они с помощью SQL представляются в виде столбцов реляционных таблиц.

Самый простой тип свойств - это свойства типов данных. Это литеральные значения, чье поведение задается классом типа данных, ассоциированным со свойством.

Например:

Property Count As %Integer;

Где Count имя свойства, %Integer – тип данных, ассоциированный со свойством.

При задании свойства можно использовать параметр, например:

Property Count As %Integer(MAXVAL = 100);

Являясь особой формой классов, типы данных имеют принципиальные отличия от классов объектов:

• от классов типов данных невозможно образование экземпляров;

• классы типов данных не могут содержать свойств;

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

Классы типов данных обладают следующими функциональными возможностями:

• Отвечают за проверку значений, которая в дальнейшем может конкретизироваться с помощью параметров классов типов данных

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

• Обеспечивают взаимодействие с SQL, ODBC, ActiveX и Java, предоставляя в их распоряжение необходимые в каждом случае операции и методы преобразования данных.

Основные типы данных:

Тип Призначення Параметри Аналогичный SQL-тип
%LiЬrаrу.Вiпаrу Двійкове значення MINLEN ­ мінімальна довжина в байтах; MAXLEN ­ максимальна довжина в байтах; BINARY, BINARY VARYING, RAW, VBINARY
%LiЬrаrу.Вооlеап Логічне значення - -
%LiЬrаrу.Сurrепсу Валюта MINVAL ­ мінімальне значення; MAXVAL ­ максимальне значення; FORMAT ­ формат аргумента функції $Fnumber MONEY, SMALLMONEY
%Library.Date Дата (внутрішній формат, що відповідає кількості днів, що пройшли з 31.12.1840) MINVAL ­ мінімальне значення; MAXVAL ­ максимальне значення; FORMAT ­ формат аргумента функції $Zdate DATE
%Library.Float Число з плаваючою точкою MINVAL ­ мінімальне значення; MAXVAL ­ максимальне значення; FORMAT формат аргумента функції $Fnumber DOUBLE, DOUBLE PRECISION, FLOAT, REAL
%LiЬrаrу.Iпtеgеr Ціле число MINVAL ­ мінімальне значення; MAXVAL ­ максимальне значення; FORMAT ­ формат аргумента функції $Fnumber BIT, INT, INTEGER, SMALLINT, TINYINT
%Library.List Дані в форматі $List     ODBCDELIMIТER задається, коли значення відображається через ОDВС у вигляді списка з використанням деякого роздільника. За замовчуванням: "," -
%Library.Name Ім’я в форматі "Прізвище, Ім’я"   MAXLEN ­ максимальна довжина. За замовчуванням: 25 ­ -
%Library,Numeric Число з фіксованою точкою MINVAL ­ мінімальне значення; MAXVAL ­ максимальне значення; FORMAT ­ формат аргумента функції $Fnumber BIT, INT, INTEGER, SMALLINT, TINYINT
%Library.Status Код помилки   -
%LiЬrаry.Striпg   Строка символів MINVAL ­ мінімальне значення; MAXVAL ­ максимальне значення, за замовчуванням: 50 TRANCAТE ­ 1, якщо строка символів повинна термінуватися по максимальній довжині (за замовчуванням), інакше 0 PATTERN ­допустимий формат аргумента оператора перевірки по шаблону CHAR, CHAR VARYING, CHARACTER, CHARACTER VARYING, NATIONAL CHAR, NATIONAL CHAR VARYING, NATIONAL CHARACTER, NATIONAL CHARACTER VARYING, NATIONAL VARCHAR, NCHAR, NVARCHAR, VARCHAR, VARCHAR2
%Library.Time ­ Час (внутрішній формат, кількість секунд, що пройшли з опівночі)   MINVAL ­ мінімальне значення; MAXVAL ­ максимальне значення; FORMAT ­ формат аргумента функції $Ztime TIME
%Library. ТimeStamp ­ Відмітка часу,(ррррммчч гг:хх:сс) MINVAL ­ мінімальне значення; MAXVAL ­ максимальне значення TIMESTAMP

Классы типов данных поддерживают различные параметры, которые меняются от типа к типу и выполняют различные действия.

Примеры параметров:

MAXLEN — задает максимальное число символов, которое может содержать строка;

MAXVAL — задает максимальное значение;

MINLEN—. задает минимальное число символов, которое может содержать строка;

MINVAL— задает минимальное значение;

FORMAT — задает формат отображения. Значение параметра соответствует опции форматирования функции $FNUMBER, которая выполняет форматирование.

SCALE— определяет число цифр после десятичной точки.

PATTERN — задает шаблон, которому должна соответствовать строка. Значение параметра PATTERN должно быть правильным выражением шаблона Caché.

TRUNCATE — если значение равно 1, то строка символов должна обрезаться до длины, указанной в параметре MAXLEN (умолчание), если равно 0, то нет.

ODBCDELIMITER— задает символ-разделитель в списке %List, когда он передается через ODBC.

VALUELIST – задает список значений для перечислимых свойств.

DISPLAYLIST – определяет дополнительный список значений перечислимого свойства, задает формат отображения для перечислимого свойства, используется вместе с параметром VALUELIST.

 









Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2021 zdamsam.ru Размещенные материалы защищены законодательством РФ.