Помощь в написании студенческих работ
Антистрессовый сервис

Динамическое создание объектов

РефератПомощь в написанииУзнать стоимостьмоей работы

Где P — указатель на переменную объектного типа, а Construct или Destruct — конструктор и деструктор этого типа. Действие процедуры New в случае расширенного синтаксиса равносильно действию следующей пары операторов: Эквивалентом Dispose является следующее: Dispose (P, Destruct). Alocation:= Acircle; Alocation: Location; New (P, Construct). Alocation:=Apoint. Apoint:= Acrcle; Acircle: Circle… Читать ещё >

Динамическое создание объектов (реферат, курсовая, диплом, контрольная)

Переменные объектного типа могут быть динамическими, то есть размещаться в памяти только во время их использования. Для работы с динамическими объектами используются расширенный синтаксис процедур New и Dispose. Обе процедуры в этом случае содержат в качестве второго параметра вызов конструктора или деструктора для выделения или освобождения памяти переменной объектного типа:

New (P, Construct).

или.

Dispose (P, Destruct).

Где P — указатель на переменную объектного типа, а Construct или Destruct — конструктор и деструктор этого типа.

Действие процедуры New в случае расширенного синтаксиса равносильно действию следующей пары операторов:

New (P);

P^.Construct;

Эквивалентом Dispose является следующее:

P^Dispose;

Dispose (P).

Применение расширенного синтаксиса не только улучшает читаемость исходного кода, но и генерирует более короткий и эффективный исполняемый код.

Полиморфизм

Полиморфизм заключается в том, что одно и то же имя может соответствовать различным действиям в зависимости от типа объекта. В тех примерах, которые рассматривались ранее, полиморфизм проявлялся в том, что метод Init действовал по-разному в зависимости от того, является объект точкой или окружностью. Полиморфизм напрямую связан с механизмом позднего связывания. Решение о том, какая операция должна быть выполнена в конкретной ситуации, принимается во время выполнения программы.

Следующий вопрос, связанный с использованием объектов, заключается в совместимости объектных типов. Полезно знать следующее. Наследник сохраняет свойства совместимости с другими объектами своего родителя. В правой части оператора присваивания вместо типов родителя можно использовать типы наследника, но не наоборот. Таким образом, в нашем примере допустимы присваивания:

Var.

Alocation: Location;

Apoin: Point;

Acircle: Circle;

Alocation:=Apoint.

Apoint:= Acrcle;

Alocation:= Acircle;

Дело в том, что наследник может быть более сложным объектом, содержащим поля и методы, поэтому присваиваемые значения экземпляра объекта-родителя экземпляру объекта-наследника может оставить некоторые поля неопределёнными и, следовательно, представляет потенциальную опасность. При выполнении оператора присвоения копируются только те поля данных, которые являются общими для обоих типов.

Показать весь текст
Заполнить форму текущей работой