Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка DELPHI.DOC
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

Методы dynamic

Механизм Dynamic доступа к другим методам подобен механизму Virtual. В обоих случаях адрес нужной процедуры или функции определяется фактическим объектом. Отличие заключается в том, что в данном случае строится таблица динамических методов. Обращение к этой таблице происходит медленнее, чем к таблице виртуальных методов, зато объём программы получается меньше. Методы Dynamic целесообразно использовать, когда класс имеет множество потомков, а количество переопределяемых методов небольшое.

Методы message

Методы Message - обработки сообщений - представляют собой особую форму динамических методов. Обработчики сообщений всегда являются процедурами. Для ускорения поиска в таблице динамических методов после ключевого слова Message записывается константа целого типа, являющаяся индексом нужного метода. В обработчике сообщений всегда имеется один параметр Var. Методы Message – это одно из звеньев взаимодействия компонентов Delphi с Windows.

Объявление обработчика сообщений выглядит приблизительно так: Procedure Handle_WM_Paint(var MsgInfo);Message WM_Paint;

Для поиска нужного адреса в таблице динамических методов в данном примере записана константа WM_Paint. Многие константы для Message зарезервированы за конкретными сообщениями Windows и выбирать их произвольно нельзя. Указанная константа поиска данного сообщения Windows может быть переопределена в каком-либо предке по линии наследования для данного объекта. Если константа Message не найдена, то вызывается метод обработки сообщений, заданный по умолчанию.

Методы abstract

Обычно методы создаются для выполнения каких-то конкретных действий. Если по какой-либо причине это выполнить не удаётся, метод в классе может быть зарезервирован с обязательным переопределением его в классах потомков. Такой метод помечается ключевым словом Abstract. Если абстрактный метод не переопределён, то вызов такого метода приводит к вызову специальной процедуры Abstract, которая генерирует исключительную ситуацию. Абстрактным не может быть статический метод, так как статические методы нельзя переопределять. Например, Type TmyParent=class

Procedure AMethod;virtual;abstract;

End;

TmyClass=class(TmyParent)

Procedure AMethod;override;

End;

Методы override

Как указано выше, зарезервированным словом Override помечаются переопределённые виртуальные или динамические методы (пример выше).

Методы class

Исходное назначение методов – определять поведение экземпляров объектов какого-либо класса. В некоторых случаях необходимо иметь ситуацию, когда поведение, задаваемое для метода, не должно зависеть от реально существующего объекта. Такая ситуация возникает с методом, который, например, должен возвращать имя класса. В этом случае метод помечается ключевым словом Class. В отличие от других команд, таких как Dynamic, Virtual и т.д., слово Class ставится перед заголовком метода, например, Class Procedure AMethod;.

Пример 14

Рассмотрим пример по использованию конструкторов и деструкторов в объектах. Кроме того, посмотрим, как можно использовать указатели на методы и методы class.

Пусть на форме дирамически строится совокупность объектов типа TButton. Далее, пусть эти объекты последовательно разрушаются с выдачей соответствующих сообщений о количестве объектов. Рассматривать этот пример будем последовательно, вводя все новые и новые конструкции и проверяя их непосредственно в среде Delphi.