29. Классы, основные элементы. Конструкторы, деструкторы

Формат описания нового класса в Delphi выглядит следующим образом:

Области видимости элементов класса: • Секция private содержит внутренние элементы, обращение к которым воз-можно только в пределах модуля, содержащего объявление класса. • Секция protected содержит защищенные элементы, которые доступны в пределах модуля, содержащего объявление класса, и внутри потомков клас¬са. • Секция public содержит общедоступные элементы, к которым возможно обращение из любой части программы. • Секция published содержит опубликованные элементы, которые по огра¬ничению доступа аналогичны public. Для визуальных компонентов, выне¬сенных на панель компонентов, информация об элементах, размещенных в этой секции, становится доступной через Инспектор Объектов. • Секция automated содержит элементы, доступ к которым также выпол¬няется аналогично public. Но для элементов, описанных в этой секции, гене¬рируется до-полнительная информация, используемая OLE (секцию имеет смысл объявлять для потомков класса TAutoObject).

Объекты Delphi всегда являются динамическими, т. е. размещаемыми в дина-мической области памяти. Соответственно, переменная типа класса по смыслу представляет собой указатель на объект. Вызовы конструктора и деструктора в такой модели становятся обязательными, т.к. конструктор выполняет размеще-ние объекта в памяти, а деструктор – выгрузку из нее.

Чтобы подчеркнуть изменение функций конструктора и деструктора в объект-ной модели Delphi, для них предлагается использовать другие имена: • Create (создать) – для конструктора; • Destroy (уничтожить) – для деструкто¬ра.

Конструктор Create класса TObject: • определяет размер памяти, необходимой для размещения объекта; • запрашивает область памяти требуемого размера; • инициализирует поля нулевыми значениями; • возвращает адрес области памяти в качестве результата.

Деструктор Destroy класса TObject: • корректно завершает работу с длинными строками и другими сложными структурами данных; • опреде¬ляет размер объекта и освобождает память. В классе TObject деструктор объявлен виртуальным, так как: • с одной стороны, в этом классе существует метод Free, который вызывает деструктор; • с другой стороны, сам деструктор в производных классах может быть пере-определен.

Hosted by uCoz