Бесплатные Рефераты >>> Математика  



 

 

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

 

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

Объектные переменные в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);   {Удаление динамического объекта}

.......

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

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

Список литературы

Для подготовки данной работы были использованы материалы с сайта  http://www.ed.vseved.ru/


 


 

Комплексные числа
Комплексные числа ИСТОРИЧЕСКАЯ СПРАВКА Комплексные числа были введены в математику для того, чтобы сделать возможной операцию извлечения квадратного корня из любого действительного числа. Это, однако, не является достаточным основанием для...

Дискретная математика
Стр. 1-1 Задание № 5 В 92-процессорном ЭВС 19 микропроцессоров обрабатывают текстовую информацию, 17 - графическою, 11 - символьную, 12 -микропроцессоров одновременно обрабатывают графическую и текстовую, 7 - текстовую и...

Способы отбора статистических данных
Способы отбора статистических данных Цель работы: 1. Овладение различными способами отбора статистических данных. 2....

Критерий Вилкоксона
Какие гипотезы можно проверять с помощью двухвыборочного критерия Вилкоксона?                Установлено, что двухвыборочный критерий Вилкоксона  (Манна-Уитни) предназначен для проверки гипотезы H0 :  P(X < Y) = 1/2, где X -...

Всемирный Потоп и смещение полюсов
Всемирный Потоп и смещение полюсов Около 9-12-ти тысяч лет назад вымерли мамонты. Этот факт нам известен со школьных времён и ассоциируется с ледниковым периодом. Но оказывается в школе мы прошли мимо интересного факта , в тот...

Первые шаги аттофизики
Первые шаги аттофизики Е.Онищенко На исходе прошлого тысячелетия (в 1999 году) Нобелевской премией было отмечено исследование сверхбыстрых химических реакций. Одним из заметных успехов физики в начале нового...

О специфике спин-спиновых взаимодействий
О специфике спин-спиновых взаимодействий Валерий Эткин Изучение ядерного магнитного резонанса (ЯМР) в конденсированных средах привело в середине ХХ столетия к обнаружению спин-спинового взаимодействия, которое ...

Математическое моделирование прыжка с трамплина
Министерство Общего и Профессионального Образования РФ Пермский государственный технический университет Кафедра математического моделирования систем и процессов ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к выпускной работе на степень бакалавра...

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

Устойчивость систем дифференциальных уравнений
Министерство образования РФ Филиал СПбГМТУ Севмашвтуз Кафедра №2 Курсовая работа по дисциплине "Специальные разделы математики" Тема: «Устойчивость систем дифференциальных уравнений» Студент:...

Греческие и римские меры
В эпоху античности не существовало единой системы мер. В разные периоды в государствах Древнего Востока, греческих городах-полисах и Римской империи значения мер неоднократно менялись, соотношения же частей оставались постоянными....