Создание и удаление объекта

Для объявления классов и объектов FPC поддерживает конструкторы (constructors) и деструкторы (destructors). Программист ответственен за вызов конструктора и деструктора явно при использовании объектов.

Пара конструктор/деструктор требуется, если объект использует виртуальные методы. В объявлении объектного типа простой идентификатор должен быть использован для именования конструктора и деструктора. Необходимо квалифицировано выбрать их имена, т.е. в форме objectidentifier.methodidentifier. FPC поддерживает также расширенный синтаксис для процедур New и Dispose. В случае динамической переменной объектного типа имя конструктора помещается в операцию вызова New. New реализуется как функция, которая возвращает указатель на создаваемый объект. Рассмотрим следующие объявления:

Объект – экземпляр класса. Для работы с объектом необходимо:

  • В разделе типов объявить класс, если он не стандартный.
  • В разделе переменных объявить имя объекта. Должно быть уникальным. Оно будет содержать начальный адрес блока памяти, выделяемой под объект в ДП.
  • Создать объект методом constructor (конструктор). Его имя – create.
  • Выполнить над объектом действия.
  • Удалить далее ненужный объект методом destructor (деструктор). Его имя – free или destroy.

Методы constructor и destructor отличаются от других методов специальными заголовками. Заголовки предписывают компилятору выполнить для этих методов дополнительные “закулисные” операции. Заголовки включаются в члены класса, а их реализация помещается в разделах методов. Большинство классов имеют один конструктор с именем create (Создать) и два деструктора с именами destroy и free. Рекомендуется использовать деструктор free, так как он сначала проверяет существование объекта, а затем вызывает деструктор destroy. При создании класса-потомка конструктор и деструктор переопределяются только тогда, когда они отличаются от этих методов класса-предка.

program SozdanObject;

{$mode objfpc}{$H+}

uses

Classes, SysUtils;                   // Ссылка на модули

type

MyClass=TObject;                      // Создан объектный класс

var

MyObject:MyClass;              // Определен объект

begin

MyObject:=MyClass.Create; // Создан объект

{Работа с объектом}

MyObject.Free;                     // Удален объект

end.

Twitter SEO Community Ваау! News2.ru Chipp Korica SMI2 Google Bookmarks Digg I.ua Закладки Yandex Linkstore Myscoop Communizm Ru-marks Webmarks Ruspace Linkomatic Kli.kz Web-zakladka Zakladok.net Reddit delicious Ma.gnolia Technorati Slashdot Yahoo My Web БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong

Copyright © 2009-2010 Программирование на паскале.