Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_po_OOP док.doc
Скачиваний:
13
Добавлен:
28.03.2015
Размер:
313.34 Кб
Скачать

Класс tObject

Он является предком всех классов Delphi. Иерархия классов любой программы, написанная на Object Pascal обладает единым корнем. -> тип данных TObject можно использовать в качестве замены любого класса.

Конструктор Create класса tObject.

Выполняет общие стандартные действия по созданию объектов.

1. Выделяет память для объекта с помощью использования метода newInstance класса TObject, который в свою очередь вызывает метод InstanceSize(метод класса TObject) для определения размера памяти, требуемого для данного объекта.

2. Инициализирует поля созданного объекта нулевыми значениями с помощью метода InitInstance класса TObject.

Конструктор Create класса TObject объявлен статическим и не содержит параметров, но в некоторых классах он переопределяется.

Constructor Create (AOwner:TComponent);virtual;

Деструктор Destroy класса TObject.

Выполняет общие стандартные действия по уничтожению объекта с помощью метода FreeInstance класса. TObject, который в свою очередь вызывает метод CleanUpInstance.для корректного завершения работы со сложными структурами данных

Вызывает метод InstanceSize для определения размера памяти, занимаемого удаляемым объектом.

Деструктор Destroy в классе TObject виртуальный, если в производных классах он переопределяется, необходимо использовать директиву override.

Одним из аргументов обработчика событий обычно яляется параметр Sender, имеющий тип TObject. Фактические это означает что Sender может принадлежать любому классу. Таким образом недостатком является то, что неизвестно, к какому именно классу принадлежит данный объект.

Проблема решается при помощи механизмов RTTI или при помощи методов класса TObject.

1 подход.

Procedure …………….. (sender: TObject)

Begin

If Sender is TButton

End

Сущевует и доругой подход, в отнощении любого объекта можно использовать методы, определенные в ….. TObject.

Например, метод ClassName возвращает строку, возвращающую имя класса. Это классовый метод, поэтому его можно применят как в отнощении объекта, так и в отношении класса.

Text:=Button1.ClassName;

Text:=TButton.ClassName;

Результат будет одинаковый.

Бывают ситуации когда необходимо получить имя класса, но чаще требуется получить ссылку на сам класс или на его базовый класс. Ссылка на класс позволяет выполнять операции в отношении класса в процессе выполнения программы. А имя класса это всего лишь строка символов.

Ссылку на класс можно получить при помощи методов:

ClassType //класс

ClassParent // родительский класс

Получив ссылку на класс можно использовать в отношении неё любой из методов класса TObject.

InstanceSize отличается от функции SizeOf.

sizeOf к любому объекту вернет 4 байта, т.к. переменная в Обжект паскале всего лишь ссылка, а объекты динамические на самом деле.

Метод InstanceSize возвращает размер объекта в процессе выполнения программы(не путать с функцией sizeOf, которая возвращает размер ссылки на объект, т.е. 4 байта).

Метод ClassInfo возвращает указать на внутреннюю информацию RTTI.

Пример того, как методы класса TObject можно использовать для получения инфы о классе.

Procedure TSenderForm.ShowSender (Sender:TObject);

Begin

Memo.Lines.Add(‘Имя класса:’+sender.ClassName);

If sender.ClassParent <> nil then

Memo.lines.add(‘родительский класс:’+sender.ClassParent.ClassName);

Memo.Lines.Add(‘размер’+IntToStr(Sender.InstanceSize));

End;

Данный метод соединен с событием onClick нескольких элементов управления.

Баттон 1

Едит1

ЧекБокс

поле

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]