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

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

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

Работа со свойствами-массивамиМассив это неупорядоченный набор информации (в противоположность спискам,которые упорядочены). Массив содержит одну или несколько именованных пар, в которых имя элемента служит ключом, и значение элемента связано с этим ключом. Нет никакой синтаксической разницы между добавлением нового элемента и изменением существующего элемента массива.Существует два типа свойств-массивов:• Массивы типов данных• Массивы объектов.Массив объектов может содержать как встроенные объекты, так и хранимые.6.8.1.

Работа с массивами типов данныхДобавить элемент к массиву типов данных:Do oref.PropertyName.SetAt(data,key)где oref ссылка OREF на объект, PropertyName имя свойства-массива, data это данные, key это ключ, связанный с новым элементом.Например, чтобы добавить новый цвет в массив Colors значений объекта Palette:Do paint.Colors.SetAt("255,0,0","красный")Где paint ссылка OREF на объект класса Palette, Colors это имя свойства-массива, и“красный” это ключ, позволяющий получить доступ к значению “255,0,0”.6.8.2. Работа с массивами встроенных объектовЧтобы добавить элемент к массиву встроенных объектов, создается новый объект,заполняется данными, затем используется следующий синтаксис для добавления объектак массиву:Do oref.PropertyName.SetAt(ElementOref,key)где oref – ссылка OREF на объект, PropertyName это имя свойства массива,ElementOref это OREF нового элемента, и key это ключ, связанный с новым элементом.Например, для добавления записи о вакцинации получаем доступ по дате к массивуVaccination объекта Patient:Do pat.Vaccination.SetAt(vac,"04/08/99")где pat – ссылка OREF на объект Patient, Vaccination – свойство типа массив встроенных объектов, “04/08/99” это ключ, связанный с новым объектом, vac – это OREF ссылка на добавляемый объект.696.8.3.

Работа с массивами хранимых объектовСинтаксис, описанный для наполнения массивов встроенных объектов, также применим к массивам хранимых объектов, если объекты уже находятся в памяти. К тому же,можно наполнять массивы хранимых объектов объектами, которые не находятся в памяти.Используется следующий синтаксис для добавления объекта к массиву:Do oref.PropertyName.SetObjectAt(ElementOid,key)где oref – ссылка OREF на объект, PropertyName – имя свойства массив, ElementOidэто OID нового элемента, key – ключ, связанный с новым элементом. Например, для добавления информации о собаке к массиву, используем в качестве ключа имя собаки:Do per.Pets.SetObjectAt(DogOid,"Джек")Где per – ссылка OREF на объект Person, Pets – свойство типа массив хранимых объектов, “Джек” это ключ, используемый для доступа к собаке с OID, равным DogOid.6.8.4.

Изменение свойств объектов в массивахКак только объект добавлен к массиву, можно изменить его свойства:Set oref.PropertyName.GetAt(key).ArrayPropertyName = dataгде oref – ссылка OREF на объект, содержащий массив, PropertyName это имя свойства массив, key идентифицирует реальные данные, ассоциированные со свойством. Например, чтобы установить тип вакцинации Vaccination, полученной пациентом на дату02/23/98:Set pat.Vaccination.GetAt("02/23/98").Type = "Polio"где pat – ссылка OREF на объект Patient, метод GetAt позволяет получить доступ поключу 2/23/98 к нужному объекту, и изменить его свойство Type на новое значение«Polio».6.9.

Обзор методов для работы с коллекциямиКроме вышеупомянутых методов для работы с коллекциями List и Array могут использоваться методы, приведенные в табл.12.Таблица 12Методы коллекцийМетодПоясненияList ArrayClear()Удаляет все элементы коллекцииДаДаCount()Возвращает количество элементов в коллек- ДаДацииDefine(key)Проверяет наличие элемента с ключом keyНет ДаДаFind(element,key)Осуществляет поиск заданного элемента кол- Далекции, начиная с позиции ключа(key). Возвращает позицию (ключ) найденного элемента, либо «», если он не найденGetAt(key)Возвращает значение элемента в позиции с ДаДаключом key.Возвращает значение элемента, следующего ДаДаGetNext(. key)после позиции ключа key, и обновляет key.Возвращает значение элемента, следующего ДаДаGetPrevious(. key)перед позицией ключа key, и обновляет key.Insert(element)Добавляет элемент в конец спискаДаНетInsertAtВставляет элемент в заданную позицию спи- ДаНет70(element,key)InsertOrdered(element)Next(key)Previous(key)RemoveAt(key)SetAt(element, key)ска.

Все последующие элементы сдвигаютсяна одну позицию.Вставляет элемент в позицию списка, соответствующую его значению в последовательности сортировки. Допустим только длясписков со значениями константами (но необъектными ссылками и не встроеннымиобъектами)Возвращает следующую позицию (ключ) после keyВозвращает следующую позицию (ключ) перед keyУдаляет элемент в позиции с ключом key изколлекцииПрисваивает новое значение элементу коллекции в позиции с ключом key.ДаНетДаДаДаДаДаДаДаДа6.10.

Работа с потокамиДля изменения содержимого свойств потока используется следующий синтаксис:Do oref.PropertyName.Write(data)Где oref – ссылка OREF на объект содержащий поток, PropertyName это имя свойства типа поток, Write это метод класса %Stream (поток), запись в поток, data это данные,связанные со свойством.

Например, для добавления нового значения к свойству Note объекта Visit используется следующий код:Do Visit.Note.Write(note)где visit – ссылка OREF на объект Visit, Note – это свойство типа поток, note этоданные типа поток, например, вводимые доктором во время визита пациента.В табл. 13 приведен ряд полезных методов для работы с потоками.Таблица 13Методы потоков данныхМетодПояснениеWrite(data)Записывает data в поток данныхRead(.length)Считывает length символов или битов из потока данных и передает их в качестве возвращаемого значения метода. Аргументпередается по ссылке, после вызова метода он содержит количество прочитанных символов или битов. Если оно оказываетсяменьше запрошенного, значит, поток данных закончился.Записывает data в поток данных в виде отдельной строки симвоWriteLine(data)(только для пото- лов.ков символов)Считывает строку символов из потока данных (вплоть до очеReadLine(.

length)(только для пото- редного ограничителя строки или до достижения длины length) ипередает их в качестве возвращаемого значения метода.ков символов)Rewind()Позиционирует указатель чтения-записи в начало потока данных.GoToEnd()Позиционирует указатель чтения-записи в конец потока данных.CopyFrom(stream)Копирует в «наш» поток данных другой поток, на который ссылается аргумент stream.OutputToDevice()Копирует все содержимое потока на текущее устройство.LineTerminatorОграничитель строки, используемый WriteLine() и ReadLine().По умолчанию CR LF.71Свойства потокаСвойствоПояснениеAtEndИстина(1), когда указатель чтения-записи находится в конце потока.Пример. Пусть класс User.Person содержит свойство Memo, которое является свойством типа поток данных.

Тогда в него можно записать текст произвольной длины.Set pers=##class(User.Person).%OpenId(ID)Do pers.Memo.WriteLine(“это первая строка”)…Do pers.Memo.WriteLine(“это последняя строка”)Do pers.%Save()QuitАналогично происходит чтение из потокаSet pers=##class(User.Person).%OpenId(ID)Do pers.Memo.Rewind()While ‘pers.Memo.AtEnd{ Set length=99write pers.Memo.ReadLine(.length),!}Quit6.11. Сохранение объектовДля сохранения хранимого объекта используется метод %Save() экземпляра:Do oref.%Save()где oref – ссылка oref объекта подлежащего сохранению.Метод %Save возвращает значение, позволяющее проверить успешность выполнения метода.Set sc=oref.%Save()где sc – значение, возвращаемое методом %Save, oref – ссылка на объект сохранения.Макро $$$ISOK возвращает 1, если метод отработал успешно, и 0 если неудачно.Наоборот, макро $$$ISERR возвращает 1, если неудачно, и 0 если успешно.Если метод отработал неудачно, то вызов метода DisplayError() из библиотеки Caché$system.Status распечатает текст сообщения об ошибке.Следующий код выполняет сохранение объекта Person со ссылкой OREF равной perи в случае ошибки выводит сообщение:Set sc = per.%Save()If $$$ISERR(sc) {Do $System.Status.DisplayError()}6.12.

Удаление объектовМожно удалить либо один объект, либо объекты одного экстента. Под экстентом понимается набор экземпляров класса и всех его подклассов.6.12.1.Удаление одного объектаДля удаления объекта из базы данных используются два метода %Delete и %DeleteId.Первый метод использует в качестве аргумента полный OID экземпляра, а второй ID экземпляра. Оба метода выдают информацию о том, как отработал метод.Синтаксис метода %Delete:Do ##class(Classname).%Delete(oid)72Set sc = ##class(Classname).%Delete(oid)Синтаксис метода %DeleteId:Do ##class(Classname).%DeleteId(id)Set sc = ##class(Classname).%DeleteId(id)Где classname это имя класса, oid это OID объекта удаления, id – ID экземпляра.

Впеременной sc – статус метода, информация о том, как он отработал.Например, для удаления объекта класса Person используется код:Set sc = ##class(Person).%Delete(oid)где oid это OID объекта Person, который требуется удалить, переменная sc содержиткод ошибки.Для удаления объекта класса Person с ID=24 используется код:Set sc = ##class(Person).%DeleteId(«24”)переменная sc содержит код ошибки.6.12.2. Удаление всех объектов экстентаМожно удалить все экземпляры класса и его подклассов, используя метод %DeleteExtent, который выдает информацию о том, как выполнилось удаление.Do ##class(Classname).%DeleteExtent()Set sc = ##class(Classname).%DeleteExtent()где Classname это имя корневого класса экстента для удаления, sc это переменная,которая содержит код ошибки.

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

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

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

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