nsutextbook (1037554), страница 12

Файл №1037554 nsutextbook (Методические указания по выполнению лабораторной работы №1) 12 страницаnsutextbook (1037554) страница 122017-12-25СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 12)

Например, так можно определить свойство Doc, являющееся ссылкой на хранимыйобъект типа Doctor:Property Doc As Doctor;5.5.9. Встроенные объектыВстроенные объекты функционируют аналогично ссылкам на объекты. Существенное различие состоит в том, что в качестве типа данных теперь задается не хранимый объект, а встраиваемый класс объектов. Следовательно, значение этого свойства – не ссылкана некий самостоятельный экземпляр объекта, а, напротив, сам этот объект, встраиваемыйв объект, который на него ссылается. С точки зрения синтаксиса определение идентичноссылке на хранимый класс объектов.

НапримерProperty Adr As Address;Где Adr это имя свойства, Address – это встроенный объект.5.5.10. Свойства коллекцииСвойство коллекция состоит из набора элементов одного типа. Caché поддерживаетдва типа коллекций: списки (List) и массивы (Array). Коллекция список состоит из упоря53доченного набора элементов, т.е. каждому элементу ставится в соответствие его порядковый номер. Коллекция массив состоит из набора пар вида: <ключ> <значение>, упорядоченных по ключу. Например, массив прививок:КлючЗначение2.04.1999От гриппа10.05.2001От клещевого энцефалита20.11.2002От дифтерииКоллекции могут содержать константы, встроенные объекты и ссылки на объекты.Например, следующий код задает свойство Colors как коллекцию список типа%String:Property Colors As %String [collection = list];Аналогично, Caché поддерживает коллекции объектов, как, например, в следующемпримере свойство Doctors является коллекцией ссылок типа массив на объекты Doctor:Property Doctors As Doctor [collection = array];5.5.11.

Потоки данныхПотоком данных называют большое неструктурированное множество данных, которое нужно хранить в базе данных. Caché SQL обеспечивает хранение данных типа BLOBs(Binary Large Objects) и CLOBs (Character Large Objects) в базе данных. BLOBs используются для хранения двоичных данных, таких как рисунки, изображения, в то время какCLOBs используются для хранения символьной информации. Например, потоки данныхмогут применяться для хранения документов, технических чертежей или рисунков. Поскольку они могут быть очень велики, Caché не оперирует с потоками данных как с атомарной информацией, а предоставляет прикладным программам методы блочной записи исчитывания данных. В соответствии с содержимым различают потоки данных типаCHARACTERSTREAM (состоящие из символов) BINARYSTREAM(состоящие из двоичных данных).

Для манипулирования потоками используются методы класса %STREAM.Например:Class MyApp.JournalEntry Extends %Persistent [ClassType = persistent]{Property ItemDate As %Date;Property PictureOfTheDay As %Stream [ Collection = binarystream ];Property EventsOfTheDay As %Stream [ Collection = characterstream ];}Класс MyApp.JournalEntry имеет два свойства типа потока: PictureOfTheDay – двоичный поток, EventsOfTheDay – символьный поток.В зависимости от того, как определено соответствующее свойство, потоки данныхавтоматически сохраняются в базе данных Caché либо файлах операционной системы. Эторазличие достигается путем присвоения параметру STORAGE значения GLOBAL, либоFILE. Следующий параметр LOCATION применяется, когда требуется задать имя глобалалибо имя каталога файловой системы, в котором должен храниться поток данных.

Приэтом поток данных всегда представляет собой поток данных, а не какой-либо самостоятельный объект. Например:Property GMemo As %Stream (STORAGE="GLOBAL", LOCATION="^MyStream") [collection = binarystream];Property FMemo As %Stream (STORAGE="FILE", LOCATION="C:\Stream") [collection= binarystream];В примере значения свойства GMemo будут сохранено в глобале ^MyStream, в товремя как значения свойства FMemo будут сохраняться в файле с автоматически генерируемым именем в директории C:\Stream.54По умолчанию потоки типа GLOBAL сохраняются в глобале ^PackageClassS. Файловые потоки по умолчанию сохраняются в текущей директории.5.5.12. Многомерные свойстваСвойство может быть объявлено как многомерное.

Многомерное свойство ведет себякак многомерная переменная, для которой могут использоваться такие функции как $Order. Например, свойство abc задано как многомерное:Property abc [ MultiDimensional ];Следующий пример демонстрирует работу со свойством abc:Set x = $DATA(obj.abc)Set x = $DATA(obj.abc(3))Set x = $GET(obj.abc(3))Set x = $ORDER(obj.abc("hello",3))KILL obj.abcгде obj – это oref-ссылка на объект.Для работы с многомерными свойствами не используются методы, характерные дляклассов типов данных. Таким образом, для многомерного свойства с именем Kids не существует методов KidsGet, KidsSet, или KidsLogicalToDisplay. Многомерные свойстване могут отображаться в SQL таблицах.5.6. МетодыМетоды – это операции, ассоциированные с объектом.

Метод выполняется внутриCaché процесса. Каждый метод может иметь имя, список формальных параметров, возвращаемое значение и программный код. Имя метода должно быть уникально внутрисвоего класса. Как правило, методы реализованы в виде функций или процедур на языкеCaché Object Script (COS). Параметры методу могут передаваться как по ссылке, так и позначению. Тип возвращаемого значения может быть каким угодно, но, как правило, этотип %Library.Status, который возвращает информацию о статусе завершения метода.Есть методы классов и методы экземпляров.

Для задания метода класса используетсяключевое слово ClassMethod, для задания метода экземпляра используется ключевое слово Method. Например, следующий синтаксис используется для задания метода класса:ClassMethod <имя метода> (список параметров) [ключевые слова]{ код}Такой синтаксис используется для задания метода экземпляра:Method <имя метода> (список параметров) [ключевые слова]{ код}5.6.1. Аргументы методаМетод может иметь любое число аргументов. При определении метода задаются аргументы со своими типами данных. Можно задать значение по умолчанию для некоторыхаргументов, так же как и аргументы, передаваемые по ссылке (по умолчанию аргументыпередаются по значению).

Например, метод Calculate имеет три аргумента:Method Calculate(count As %Integer, name, state As%String = "CA"){// ...}55где count и state объявлены как %Integer и %String, соответственно. По умолчанию, типомданных необъявленного аргумента является тип %String, в нашем случае name имеет тип%String. Т.е.

можно неявно задавать типы аргументов.5.6.2. Определение значений по умолчанию для аргументов методаНапример:Method Test(flag As %Integer = 0){}При вызове метода без аргументов, он будет использовать значение по умолчанию.5.6.3. Передача аргументов по ссылкеПо умолчанию, аргументы передаются методу по значению.

Можно использоватьпередачу по ссылке, используя модификатор ByRef. Например:Method Swap(ByRef x As %Integer, ByRef y As %Integer){Set temp = xSet x = ySet y = temp}Можно также определить аргументы, которые возвращаются по ссылке, но не имеютвходного значения, используя модификатор Output. Это эквивалентно ByRef, за исключением того, что входное значение аргумента игнорируется.Method CreateObject(Output newobj As MyApp.MyClass) As%Status{Set newobj = ##class(MyApp.MyClass).%New()Quit $$$OK}В Caché Object Script при вызове метода, аргументы которого передаются по ссылке(ByRef или Output), нужно ставить точку перед каждым аргументом:Do obj.Swap(.arg1, .arg2)5.6.4.

Возвращаемое значение методаПри определении метода задается, возвращает ли метод значение и если да, то задается его тип. Тип, возвращаемый методом, есть класс. Если возвращаемый тип есть класстипа данных, метод возвращает литеральное значение (такое как число или строка). Впротивном случае, метод возвращает ссылку (OREF) на экземпляр класса. Синтаксис:Method MethodName() As ReturnType{}где MethodName это метод, ReturnType задает имя класса, возвращаемого методом.Например, следующий метод возвращает значение типа %Integer:Method Add(x As %Integer, y As %Integer) As %Integer{Quit x + y}Пример метода, который создает и возвращает экземпляр объекта:Method FindPerson(id As %String) As Person{Set person = ##class(Person).%OpenId(id)Quit person }565.6.5. Видимость методовМетод может быть public или private.

Private-метод может использоваться только методами класса, которому принадлежит. Public-метод может использоваться любыми внешними методами. В Caché private-методы наследуются и являются видимыми внутри подклассов данного класса. В других языках данные методы носят название «защищенных»(protected).5.6.6. Язык методаПри создании метода можно использовать следующие языки: “Caché” (CachéObjectScript), “Basic”, и “Java”.

По умолчанию, метод использует язык, определенный включевом слове его класса. Можно его перекрыть, используя ключевое слово классаLanguage. Например:Class MyApp.Test {/// метод BasicMethod TestB() As %Integer [ Language = basic]{'код BasicPrint "Это тест"Return 1}/// метод Cache ObjectScriptMethod TestC() As %Integer [ Language = cache]{// код Cache ObjectScriptWrite "Это тест"Quit 1}}Внутри класса можно использовать для реализации методов и другие языки.

Все методы взаимодействуют, не взирая на конкретный язык реализации.Методы, написанные на языке Caché ObjectScript и Basic, компилируются в выполнимый Caché-код. Java-методы выполняются по-другому. Когда создается Java-представление класса (с использованием Caché Java Binding), все Java-методы генерируютсянепосредственно в Java-код. Это означает, что все Java-методы выполняются внутри родной JVM (виртуальной Java машины) и получают доступ к полноценной Java-среде.5.6.7. Ключевые слова методаМожно модифицировать определение метода посредством использования одного илиболее ключевых слов.

Все ключевые слова не являются обязательными, при этом каждоеключевое слово имеет значение по умолчанию, если слово явно не задается.Основные ключевые слова:ClassMethod – определяет метод как метод класса. По умолчанию, методы являютсяметодами экземпляров. Подклассы не могут изменить значение ключевого словаClassMethod.Description – обеспечивает необязательное описание метода, которое используетсядля построения документации класса. По умолчанию, метод не имеет описания. Подклассы не наследуют значение описания.Final – означает, что подклассы не могут перекрыть метод, т.е.

Характеристики

Тип файла
PDF-файл
Размер
2,42 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее