русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

RTTI и размещение объектов в памяти


Дата добавления: 2015-06-12; просмотров: 604; Нарушение авторских прав


В Object Pascal после компиляции программы для любого класса сохраняется некая дополнительная информация, которая размещается в памяти непосредственно перед VMT. Эта информация называется информацией о типе периода времени выполнения (run-time type information, RTTI). Как было сказано выше, любой объект кроме данных полей содержит указатель на VMT (возможно на пустую таблицу, если у класса и его предков нет виртуальных методов). Следовательно, во время работы программы любой объект может получить доступ к RTTI своего класса. Схема размещения объектов и класса в памяти показана на рис. 1.

Рис. 1. Схема размещения объектов и RTTI в памяти

Известно, что в RTTI в числе прочих содержатся следующие данные:

1. Указатель на VMT класса-предка;

2. Указатель на строку с именем класса;

3. Размер экземпляра объекта в байтах.

Эти данные позволяют во время выполнения программы контролировать (type checking) и приводить (type casting) объектные типы.

Для контроля типов используется оператор is. Выражение объект is класс возвращает true, если объект принадлежит указанному классу или потомкам этого класса:

if Man is TPerson then . . .

Для приведения типов используется оператор as в следующей форме:

(Man as TPerson).SetAge(37);

Допустима традиционная конструкция приведения типов в виде TPerson(Man).SetAge(37), однако оператор as является более безопасным. В случае неудачи (то есть, когда объект не относится к указанному классу или его потомкам) он генерирует обрабатываемую исключительную ситуацию, а жёсткое приведение типов может привести к краху приложения.


 

Литература

1. Архангельский, А. Delphi 2006. Справочное пособие. Язык Delphi, классы, функции Win32 и .NET / А. Я. Архангельский; – СПб. : Бином-Пресс, 2009. – 1152 с. : ил.



2. Кэнту, М. Delphi 2005. Для профессионалов / Марко Кэнту ; пер. с англ. – СПб. : Питер, 2007. – 912 с. : ил.

3. Calvert, Ch. Object Pascal Style Guide / Charles Calvert [Электронный ресурс]. Режим доступа : http://edn.embarcadero.com/article/10280.


[1] Для имён полей в Object Pascal традиционно используется префикс «f» (field – поле).

[2] Термин специфичен для Object Pascal, в котором статические методы противопоставляются виртуальным. В других языках программирования под статическим методом обычно понимают методы, работающие с классом, а не объектом.



<== предыдущая лекция | следующая лекция ==>
Полиморфизм | Решение задач с линейными алгоритмами.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.043 сек.