Шаг 14.
Состав класса TObject

    На этом шаге мы рассмотрим методы класса TObject.

    Класс TObject инкапсулирует основные функции, свойственные всем объектам Delphi. Интерфейс TObject обеспечивает:

    Все классы в Delphi являются прямыми или косвенными наследниками TObject. Прямое наследование используется только при объявлении простых классов, объекты которых не являются компонентами, не могут присваиваться друг другу и не участвуют в операциях обмена с потоками. Подавляющее большинство классов являются косвенными наследниками TObject и образуются от производных классов. Если при объявлении нового типа объектов не указывается класс-предок, то Delphi считает TObject предком нового класса.

    Во всех объектах, которые используются в программах, допустимо применять методы, определенные в классе TObject. Перечислим основные из них (таблица 1):

   
Таблица 1. Основные методы TObject
Метод Описание
constructor Create; Конструктор. Создает новый экземпляр объекта и инициирует обработчик исключительных ситуаций. Не осуществляет инициализацию каких-либо данных, поэтому перегружается в классах-наследниках.
destructor Destroy; virtual; Деструктор. Производит действия по уничтожению экземпляра объекта. Рекомендуется вызывать не Destroy, а Free.
procedure Free; Уничтожает объект и освобождает выделенную под него память. Автоматически вызывает Destroy, если объект существует.
class function NewInstance: TObject; virtual; Выделяет область памяти под объект и возвращает указатель на нее. Автоматически вызывается всеми конструкторами. Использует InstanceSize. Может перегружаться в классах-наследниках.
class procedure InitInstance (Instance: Pointer) : TObject; Инициализирует экземпляр объекта и указатель на его таблицу виртуальных методов. Вызывается автоматически методом NewInstance. Не может быть перегружен.
procedure FreeInstance; virtual; Освобождает память, выделенную ранее методом NewInstance. Автоматически вызывается деструктором Destroy. Непосредственный вызов пользователем не требуется. Должен быть перегружен, если перегружен метод NewInstance. Использует InstanceSize для определения размера выделенной области памяти.
function ClassType: TClass; Возвращает указатель на класс вызвавшего объекта.
class function ClassName: string; Возвращает строку с именем класса.
class function ClassParent: TClass; Возвращает указатель на класс-предок.
class function ClassInfo: Pointer; Возвращает указатель на структуру, содержащую информацию о классе.
class function InstanceSize: LongInt; Возвращает размер экземпляра объекта.
class function InheritsFrom(AClass: TClass): Boolean; Проверяет, является ли данный класс порожденным от класса AClass и возвращает соответствующее логическое значение.
class function ClassNameIs(const Name: string): Boolean; Возвращает True, если передаваемое в функцию имя совпадает с именем данного класса.
class function MethodAddress (const Name: string): Pointer; Возвращает адрес метода вызвавшего объекта с заданным именем.
class function MethodName(Address: Pointer): string; Возвращает имя метода с заданным адресом.
function FieldAddress (const Name: string): Pointer; Возвращает адрес поля вызвавшего объекта с заданным именем.

    На следующем шаге мы рассмотрим состав класса TComponent.




Предыдущий шаг Содержание Следующий шаг