Классы и объекты. Синтаксис описания класса

Структура класса

Синтаксис описания класса:

<имя класса> = class(<имя класса-родителя>)

private { закрытый }

{ Данные и методы, доступные только в данном классе }

protected { защищенный }

{ Данные и методы, доступные только в наследуемых классах }

public { открытый }

{ Данные и методы доступные всем }

published { публикуемый }

{ Данные и методы доступные в Инспекторе объектов Delphi }

end;

Имя класса в Object Pascal принято начинать с буквы Т, а имя данных (их называют полями) – с буквы F.

Базовый класс в Object Pascal – TObject. Этот абстрактный класс, объявленный в модуле System, является родителем всех других классов и содержит только спецификации методов, включая базовый конструктор и деструктор.

Если в объявлении класса не указан класс-родитель, то объявляемый класс будет считаться наследником класса TObject:

Type

TMyClass = Class { эквивалентно TMyClass = Class(TObject) }

. ..

end;

Создание и уничтожение объектов

Главное отличие объектов в Object Pascal заключается в том, что все объекты создаются динамически.

Для создания объекта необходимо вызвать конструктор (в Object Pascal он обычно называется Create), который возвращает указатель – адрес созданного объекта.

Для уничтожения объекта рекомендуется вызывать метод Free, который проверяет существование объекта (не равен ли он nil), а затем вызывает деструктор (в Object Pascal он обычно называется Destroy).

Пример создания и уничтожения объекта:

Type

ТМуClass = class (TObject)

Private

. ..

Public

. ..

Constructor Create; // Конструктор

Destructor Destroy; // Деструктор

end;

Реализация методов класса

Var

МуObject: ТМуClass;

Begin

МуObject:= ТМуClass.Create; { Создание объекта:

§ имя объекта, МуObject – указатель, результат вызова конструктора

§ конструктор по синтаксису процедура, но вызывается как функция

§ конструктор вызывается c именем класса – ТМуClass. Create

}

. ..

МуObject.Free; // Уничтожение объекта

End.

В реализации конструктора необходимо сначала вызвать конструктор класса-родителя – inherited, а затем выполнить необходимые действия.

Реализация деструктора должна завершаться вызовом деструктора класса-родителя – inherited.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: