Реферат по предмету "Программирование"


Динамические объекты 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); {Удаление динамического объекта}
.......
При необходимости деструктор, как и любой другой метод объекта (кроме конструктора!), можно объявить виртуальным.


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

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

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Адвокатура России: прошлое и настоящее
Реферат Отдел Покрытосеменные, или цветковые растения
Реферат Расчёт экономической эффективности внедрения нового типа воздушного судна
Реферат Применение проблемного обучения при изучении темы: "Предельные одноосновные кислоты"
Реферат Философия природы 3
Реферат Dress Code In Schools Essay Research Paper
Реферат Профилактика наркотической зависимости подростков
Реферат США в первой половине XIX века Гражданская война в США
Реферат Философия музыки 2
Реферат «О, Русь моя! Жена моя! До боли нам ясен долгий путь!» (тема Родины в поэзии А. А. Блока)
Реферат Философия эпохи Возрождения 15
Реферат Эволюция: от отрицания к взаимодействию
Реферат Роль алхимии в становлении химии
Реферат Билеты по государственному регулиованию рынка
Реферат Святые страстотерпцы Борис и Глеб к истории канонизации и написания житий