Архив категории ‘Язык программирования Object Pascal’

Операции is и as

    На этом шаге мы рассмотрим операции is и as.     Для работы с информацией о типах времени выполнения (RTTI) в Object Pascal введены две новые операции: is и as.     Операция is является бинарной, то есть имеющей два операнда, и принимает следующий вид: <Объект> is <Класс> .     Она позволяет определить во время выполнения […]

Классовые методы и указатели на классы

    На этом шаге мы рассмотрим использование классовых методов.     Классовые методы - это методы, которые оперируют собственно с классом, а не с объектами класса. Для описания заголовков таких методов используется зарезервированное слово class, которое ставится перед словами procedure и function.     Классовый метод может быть вызван с помощью ссылки на имя класса или с […]

Указатели на методы и делегирование

    На этом шаге мы рассмотрим делегирование методов.     Указатели на методы описываются так же, как процедурные типы, которые рассмотрены в шаге 32. Единственным отличием является указание ключевых слов of object после списка формальных параметров. При этом директива дальнего вызова не требуется ни для 16-ти, ни для 32-х разрядной версий Delphi. type TMyMethod = procedure […]

Абстрактные методы

    На этом шаге мы кратко рассмотрим абстрактные методы.     Абстрактные методы - это методы, которые имеют объявление заголовка в каком-либо классе, но не имеют описания реализации. Таким методам реализация и не нужна, поскольку в своем классе они только обозначают присутствие какого-то действия, которое каждый из объектов-потомков будет выполнять по-своему. Соответственно этому, абстрактными могут быть […]

Методы обработки сообщений

    На этом шаге мы приведем общие сведения по методам обработки сообщений.     Методы обработки сообщений, являются новой разновидностью динамических методов, которая впервые введена в Object Pascal.     Для объявления методов обработки сообщений используется директива message, которая указывает компилятору, что данный метод является динамическим, и его смещение в таблице динамических методов определяется именем сообщения, указанным […]

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

    На этом шаге мы охарактеризуем динамические методы.     Динамические методы отличаются от виртуальных методов способом диспетчеризации на этапе выполнения. Для динамических методов компилятор вместо таблицы виртуальных методов (ТВМ) строит таблицу динамических методов (ТДМ). Применение ТДМ уменьшает размер памяти, используемой прикладной программой при работе с объектами. Однако приложение при этом будет работать медленнее. Во всех […]

Виртуальные методы

    На этом шаге мы кратко охарактеризуем виртуальные методы.     Синтаксически описание виртуальных методов отличается наличием директивы virtual, которая указывается в конце заголовка методов при объявлении классов. При описании реализации метода эта директива не ставится.     В классах-потомках можно переопределить (override) наследуемый родительский виртуальный метод. Для этого, объявляемый метод обязан иметь заголовок, идентичный заголовку наследуемого […]

Статические методы

    На этом шаге мы приведем краткую характеристику статических методов.     Вызов статических методов выполняется точно также, как и вызовы обычных процедур и функций. Определение конкретных адресов статических методов и их связывание выполняются во время компиляции. Поэтому такие методы не могут быть переопределены для реализации полиморфизма. Если в классе-потомке объявляется метод с таким же именем, […]

Статические, виртуальные и динамические методы (общие сведения)

    На этом шаге мы приведем краткую характеристику перечисленных методов.     В Object Pascal сохранены все три типа (статические, виртуальные, динамические) методов Borland Pascal, оперирующих полями объектов, а также добавлена новая разновидность динамических методов - методы обработки сообщений. По умолчанию все методы являются статическими.     Примечание. Не следует путать динамические объекты и динамические методы. Это […]

Область видимости в классах

    На этом шаге мы перечислим правлила, определяющие область видимости в классах и рассмотрим применяющиеся при этом конструкции.     Область видимости идентификаторов, объявленных в классах, в общем случае распространяется: от точки объявления до конца описания класса; во всех объектах объявляемого класса, расположенных как в данном модуле, так и в модулях, которые его включают в своем […]