Путешествуя по TObject. Или как оно работает
Категория реферата: Рефераты по информатике, программированию
Теги реферата: контрольные 7 класс, бесплатные рефераты без регистрации
Добавил(а) на сайт: Jaz'kov.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 | Следующая страница реферата
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;
Сразу видны методы класса, а их функциональность, как известно, не зависит от факта существования экземпляра. Рассмотрим поподробнее каждый из методов.
Сразу хочу оговориться, методы - конструкторы и деструкторы на самом деле являются операторами, то есть внутренними, не зависящими от их реализации в коде, конструкциями.
Constructor Create;
Все объекты создаются посредством вызова конструктора. Собственно конструктор не обязан называться Create, просто это принятое название данного метода. Конструктор на самом деле является методом класса, и в процессе его работы вызываются следующие методы:
NewInstance
InitInstance
Create
AfterConstruction
На самом деле вызов этих методов происходит достаточно интересно. В TObject конструктор не выполняет никакой деятельности, однако, как корневой класс иерархии он создается на уровне RTM. Что же происходит? После вызова конструктора RTM вызывает метод NewInstance, который выделяет область в памяти, согласуясь при этом со значением vmtInstanceSize, которое формируется при компиляции. В рамках вызова NewInstance выполняется вызов InitInstance, который заполняет поля метода значениями, обозначенными в модификаторах default, далее выполняется код, описанный в теле процедуры Create (или той, что заявлена в качестве конструктора), после чего управление передается в точку, определенную в точке vmtAfterConstruction, которая по умолчанию указывает на метод AfterConstruction. Все эти манипуляции позволяют максимально упростить процесс гибкого создания экземпляра класса в рамках объектной модели Delphi. Таким образом, при создании экземпляра класса (объекта) вы можете «поприсутствовать» на любой его фазе. Смысл процедуры AfterConstruction состоит в том, чтобы выявить момент окончания конструирования класса. Удобство его использования состоит в том, что он вызывается только при удачном выполнении конструктора, что, сами понимаете достаточно выгодно. На сегодняшний момент только TCustomForm и TCustomDataModule перегружают этот метод специально для того, чтобы выполнить специфичные для них функции, так что мешает нам сделать то же самое? Но это уже вопрос конструирования класса.
Что же произойдет при возникновении исключительной ситуации в рамках конструктора? Здесь важно знать о том, что все элементы класса уже созданы и при возникновении исключительной ситуации мы знаем, что можно удалить. Так вот при возникновении исключения вызываются все действия, связанные с разрушением - вызов деструктора, все по полной программе.
Важно знать, что при вызове конструктора класса он вызывается как конструктор и создает экземпляр, при вызове же конструктора у объекта он вызывается как процедура и нового экземпляра не создает, отсюда получают свое начало ошибки следующего рода:
Var
O : TObject;
Begin
O.Create; // Неверный вызов
Рекомендуем скачать другие рефераты по теме: сочинение язык, доклад по биологии.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 | Следующая страница реферата