GeoSELECT.ru



Программирование / Реферат: Динамические объекты (Турбо Паскаль) (Программирование)

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

Реферат: Динамические объекты (Турбо Паскаль) (Программирование)



ДИНАМИЧЕСКИЕ ОБЪЕКТЫ
Объектные переменные в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); {Удаление динамического объекта}
.......
При необходимости деструктор, как и любой другой метод объекта
(кроме конструктора!), можно объявить виртуальным.





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





Новинки рефератов ::

Реферат: Размножение (Биология)


Реферат: Гипотезы происхождения жизни на Земле (Естествознание)


Реферат: Джотто (Искусство и культура)


Реферат: Страхові послуги (Страхование)


Реферат: Разработка интерактивной среды обучения работе (Компьютеры)


Реферат: Философский поиск истины (Философия)


Реферат: Реализация норм права: понятие и формы (Теория государства и права)


Реферат: Анализ состояния расчетов и платежеспособности торгового предприятия (Аудит)


Реферат: Культура (Искусство и культура)


Реферат: Внешнеэкономические сделки: правовое регулирование и коллизии (Доклад) (Право)


Реферат: Соционика: можно ли прогнозировать отношения? (Психология)


Реферат: Маркетинг и управление качеством (Маркетинг)


Реферат: Нормативная база по аудиту в проведении проверки учредительных документов (Бухгалтерский учет)


Реферат: Талант и свобода (Литература)


Реферат: Сюрреализм (Искусство и культура)


Реферат: Устный счет как средство повышения интереса к уроку математики (Педагогика)


Реферат: Роль высшего образования в воспроизводстве рабочей силы (Педагогика)


Реферат: Деятельность КГБ при Ю.В. Андропове (Политология)


Реферат: Информатизация учебного процесса (Педагогика)


Реферат: Business relation ships in japan (Иностранные языки)



Copyright © GeoRUS, Геологические сайты альтруист