БОЛЬШАЯ НАУЧНАЯ БИБЛИОТЕКА  
рефераты
Добро пожаловать на сайт Большой Научной Библиотеки! рефераты
рефераты
Меню
Главная
Налоги
Начертательная геометрия
Оккультизм и уфология
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование и комп-ры
Радиоэлектроника
Региональная экономика
Режущий инструмент
Реклама и PR
Ресторанно-гостиничный бизнес бытовое обслуживан
Римское право
Русский язык культура речи
РЦБ ценные бумаги
САПР
Сексология
Семейное право
Социология
Страховое право
Строительство архитектура
Таможенное право
Теория государства и права
Технология
Таможенная система
Транспорт
Физика и энергетика
Философия
Финансы деньги и налоги
Физкультура и спорт
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика и эстетика
Сочинения по литературе и русскому языку
Рефераты по теории государства и права
Рефераты по теории организации
Рефераты по теплотехнике
Рефераты по товароведению
Рефераты по трудовому праву
Рефераты по туризму
Рефераты по уголовному праву и процессу
Рефераты по управлению
Рефераты по менеджменту
Рефераты по металлургии
Рефераты по муниципальному праву
Биографии
Рефераты по психологии
Рефераты по риторике
Рефераты по статистике
Рефераты по страхованию
Рефераты по схемотехнике
Рефераты по науке и технике
Рефераты по кулинарии
Рефераты по культурологии
Рефераты по зарубежной литературе
Рефераты по логике
Рефераты по логистике
Рефераты по маркетингу
Рефераты по международному публичному праву
Рефераты по международному частному праву
Рефераты по международным отношениям
Рефераты по культуре и искусству
Рефераты по кредитованию
Рефераты по естествознанию
Рефераты по истории техники
Рефераты по журналистике
Рефераты по зоологии
Рефераты по инвестициям
Рефераты по информатике
Исторические личности
Рефераты по кибернетике
Рефераты по коммуникации и связи
Рефераты по косметологии
Рефераты по криминалистике
Рефераты по криминологии
Новые или неперечисленные
Без категории

Динамические объекты \TurboPacal\

Динамические объекты \TurboPacal\

ДИНАМИЧЕСКИЕ ОБЪЕКТЫ

Объектные переменные вo многом подобны обычным переменным Турбо

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

Паскаль содержит средства, облегчающие размещение объектных переменных в

куче и их удаление из нее, например:

var

Pline: ^Tline;

.......

New(Pline, Init):

.......

В этом примере размещение объектной переменной (на нее указывает

PLINE) в куче сопровождается одновременным обращением к конструктору

TLINE.INIT для инициализации объекта и связывания виртуальных методов с

вновь созданной переменной: в процедуре NEW допускается в качестве второго

параметра указывать обращение к конструктору.

Более того, процедуру NEW можно вызывать и как функцию - в этом случае

она возвращает значение типа POINTER, указывающее на динамически

распределенный объект:

PLine := New(TLine);

или

PLine := New(TLine, Init):

Обратите внимание: первым параметром процедуре New передается

указатель на динамически распределяемый объект, в то время как первым

параметром функции NEW - тип распределяемого объекта. И в том, и в другом

случае в качестве втором параметра обращения допускается использовать вызов

конструктора, однако имя конструктора не может быть составным -ведь в

момент обращения динамический объект еще не создан. Например, оператор

New(Pline, PLine^.Init);

вызовет сообщение об ошибке.

При обращении к NEW с одновременным вызовом конструктора динамическая

память резервируемая с помощью специального программного кода, входящего в

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

конструктора (до begin). При этом динамическая память может оказаться

исчерпанной. В этом случае стандартная функция обработки ошибок

администратора кучи выдает значение 0, что вызывает аварийное завершение

программы с кодом ошибки 203. Если используется нестандартная функция

обработки ошибок и эта функция возвращает 1, конструктор пропускает

операторы после begin и возвращает NIL. Таким образом гарантируется, что

исполняемые операторы конструктора будут работать только при условии

нормального распределения динамической памяти. Однако в теле конструктора

может быть создан новый динамический объект, в нем - свой и т.д. Турбо

Паскаль

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

уровне обнаружится нехватка динамической памяти, необходимо ликвидировать

всю цепочку успешно распределенных объектов. Чтобы эта операция стала

возможной, в Турбо Паскаль введена стандартная процедура без параметров

FAIL, которая может вызываться только из конструктора и которая освобождает

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

Для удаления динамического объекта из кучи используется особый метод -

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

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

динамического объекта (т.е. переменной объектного типа, размещенной в

динамической памяти), например, осуществить нужную коррекцию списка

динамических объектов. Обращение к деструктору указывается вторым

параметром при вызове процедуры DISPOSE, например:

..........

type

TLine = object(Point)

......

Constructor Init;

Destructor Done;

end;

.......

New(PLine, Init); {Размещение динамического объекта}

.......

Dispose(PLine, Done); {Удаление динамического объекта}

.......

При необходимости деструктор, как и любой другой метод объекта

(кроме конструктора!), можно объявить виртуальным.





17.06.2012
Большое обновление Большой Научной Библиотеки  рефераты
12.06.2012
Конкурс в самом разгаре не пропустите Новости  рефераты
08.06.2012
Мы проводим опрос, а также небольшой конкурс  рефераты
05.06.2012
Сена дизайна и структуры сайта научной библиотеки  рефераты
04.06.2012
Переезд на новый хостинг  рефераты
30.05.2012
Работа над улучшением структуры сайта научной библиотеки  рефераты
27.05.2012
Работа над новым дизайном сайта библиотеки  рефераты

рефераты
©2011