Существование «прародителя» всех классов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Существование «прародителя» всех классов



В языке Delphi существует предопределенный класс TObject, который служит неявным предком тех классов, для которых предок не указан. Это означает, что объявление

 

type type

TTextReader = class ~ TTextReader = class(TObject)

... …

 

end; end;

Класс TObject – корень любой иерархии классов. Он содержит ряд методов, которые по наследству передаются всем остальным классам. Среди них конструктор Create, деструктор Destroy, метод Free и некоторые другие методы.


 

 

TObject = class

constructor Create;

procedure Free;

class function InitInstance(Instance: Pointer): TObject;

procedure CleanupInstance;

function ClassType: TClass;

class function ClassName: ShortString;

class function ClassNameIs(constName: string): Boolean;

class function ClassParent: TClass;

class function ClassInfo: Pointer;

class function InstanceSize: Longint;

class function InheritsFrom(AClass: TClass): Boolean;

class function MethodAddress(constName: ShortString): Pointer;

class function MethodName(Address: Pointer): ShortString;

function FieldAddress(constName: ShortString): Pointer;

function GetInterface(constIID: TGUID; out Obj): Boolean;

class function GetInterfaceEntry(constIID: TGUID): PInterfaceEntry;

class function GetInterfaceTable: PInterfaceTable;

function SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult; virtual;

procedure AfterConstruction; virtual;

procedure BeforeDestruction; virtual;

procedure Dispatch(var Message); virtual;

procedure DefaultHandler(var Message); virtual;

class function NewInstance: TObject; virtual;

procedure FreeInstance; virtual;

destructor Destroy; virtual;

end;

Create – стандартный конструктор.

Free – уничтожает объект: вызывает стандартный деструктор Destroy, если значение псевдопеременной Self не равно nil.

InitInstance(Instance: Pointer): TObject – при создании объекта инициализирует нулями выделенную память. На практике нет необходимости вызывать этот метод явно.

CleanupInstance ­– освобождает память, занимаемую полями с типом string, Variant, динамический массив и интерфейс. На практике нет необходимости вызывать этот метод явно.

ClassType: TClass – возвращает описатель класса (метакласс).

ClassName: ShortString – возвращает имя класса.

ClassNameIs(const Name: string): Boolean – проверяет, является ли заданная строка именем класса.

ClassParent: TClass – возвращает описатель базового класса.

ClassInfo: Pointer – возвращает указатель на соответствующую классу таблицу RTTI (от англ. Runtime Type Information). Таблица RTTI используется для проверки типов данных на этапе выполнения программы.

InstanceSize: Longint – возвращает количество байт, необходимых для хранения в памяти одного объекта соответствующего класса. Заметим, что значение, возвращаемое этим методом и значение, возвращаемое функцией SizeOf при передаче ей в качестве аргумента объектной переменной – это разные значения. Функция SizeOf всегда возвращает значение 4 (SizeOf(Pointer)), поскольку объектная переменная – это ни что иное как ссылка на данные объекта в памяти. Значение InstanceSize – это размер этих данных, а не размер объектной переменной.

InheritsFrom(AClass: TClass): Boolean – проверяет, является ли класс AClass базовым классом.

MethodAddress(const Name: ShortString): Pointer – возвращает адрес published-метода, имя которого задается параметромName.

MethodName(Address: Pointer): ShortString – возвращает имяpublished-метода по заданному адресу.

FieldAddress(const Name: ShortString): Pointer – возвращает адрес published-поля, имя которого задается параметром Name.

GetInterface(const IID: TGUID; out Obj): Boolean – возвращает ссылку на интерфейс через параметр Obj; идентификатор интерфейса задается параметром IID.

GetInterfaceEntry(const IID: TGUID): PInterfaceEntry – возвращает информацию об интерфейсе, который реализуется классом. Идентификатор интерфейса задается параметром IID.

GetInterfaceTable: PInterfaceTable – возвращает указатель на таблицу с информацией обо всех интерфейсах, реализуемых классом.

AfterConstruction – автоматически вызывается после создания объекта. Метод не предназначен для явного вызова из программы. Используется для того, чтобы выполнить определенные действия уже после создания объекта (для этого его необходимо переопределить в производных классах).

BeforeDestruction ­– автоматически вызывается перед уничтожением объекта. Метод не предназначен для явного вызова из программы. Используется для того, чтобы выполнить определенные действия непосредственно перед уничтожением объекта (для этого его необходимо переопределить в производных классах).

Dispatch(var Message) – служит для вызова методов, объявленных с ключевым словом message.

DefaultHandler(var Message) – вызывается методом Dispatch в том случае, если метод, соответствующий сообщению Message, не был найден.

NewInstance: TObject – вызывается при создании объекта для выделения динамической памяти, чтобы разместить в ней данные объекта. Метод вызывается автоматически, поэтому нет необходимости вызывать его явно.

FreeInstance – вызывается при уничтожении объекта для освобождения занятой объектомдинамической памяти. Метод вызывается автоматически, поэтому нет необходимости вызывать его явно.

Destroy – стандартный деструктор.

 

 



Поделиться:


Последнее изменение этой страницы: 2016-08-14; просмотров: 213; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.147.87 (0.007 с.)