Delphi-6 - среда разработки программного обеспечения для систем промышленной автоматизации. Букреев В.Г - 69 стр.

UptoLike

Составители: 

Draw(True) ;
end;
Procedure TVisualObject.Hide;
begin
Draw(False) ;
end;
Методы Draw у родителя и потомка имеют разную реализацию и
создают разные изображения. В результате родительские методы
Show и Hide прятать или показывать те или иные изображения будут в
зависимости от конкретной реализации метода Draw у любого из своих
потомков. Динамическое связывание в полной мере реализует поли-
морфизм классов.
Разница между динамическими и виртуальными методами состо-
ит в том, что таблица динамических методов DMT содержит адреса
только тех методов, которые объявлены как dynamic в данном классе, в
то время как таблица VMT содержит адреса виртуальных методов не
только данного класса, но и всех его родителей. Значительно большая
по размеру таблица VMT обеспечивает более быстрый поиск, в то время
как при обращении к динамическому методу программа сначала про-
сматривает таблицу DMT у объекта, затем у его родительского класса и
так далее, пока не будет найдена нужная точка входа.
В состав любого класса входят два специальных методаконст-
руктор и деструктор. У класса TObject эти методы называются Create и
Destroy, так же они называются в подавляющем большинстве его по-
томков. Конструктор распределяет объект в динамической памяти и по-
мещает адрес этой памяти в переменную self, которая автоматически
объявляется в классе. Деструктор удаляет объект из кучи. Обращение к
конструктору должно предварять любое обращение к полям и некото-
рым методам объекта. По своей форме конструкторы и деструкторы яв-
ляются процедурами, но объявляются с помощью зарезервированных
слов Constructor и Destructor:
type
TMyClass = class
IntField: Integer;
Constructor Create(Value: Integer);
Destructor Destroy;
end;
Любые поля объекта, а также методы класса, оперирующие с его
полями, могут вызываться только после создания объекта с помощью
вызова конструктора, т. к. конструкторы распределяют объект в дина-
69