Пример использования директив

Вопрос

Скрытие данных в объектном типе. Директивы закрытой, открытой части класса. Привести пример использования директив.

Объектный тип осуществляет синхронизацию кода и данных путем совместного построения их описания. Чтобы получить значение одного поля объекта необходимо вызвать соответствующий метод, который возвращает значение нужного поля. Чтобы присвоить полю значение, также необходимо вызвать метод, который назначает данному полю новое значение. Необходимо предусмотреть объекты методы, которых доступны, но непосредственный доступ к данным объекта запрещен. Для этого используются скрытые поля и методы.

В соответствии с концепцией объектно-ориентированного программирования (инкапсуляцией) в Delphi существуют четыре директивы видимости, предназначенные для сокрытия полей и методов внутри объекта. Первая из них — private. Это самая строгая из всех директив видимости. Поля, свойства и методы, описанные в разделе private, называются приватными или личными. Поля и методы, объявленные в этой секции, не будут видны во всех классах-потомках.

Вторая, менее строгая — protected. Она предназначена для объявления тех полей и методов, которые должны быть видны в классах-потомках. Поля, свойства и методы, описанные в разделе protected, называются защищенными. Директива protected определяет принципиально отличные правила области видимости и обеспечивает ограничение доступа наряду с директивой private. Но если private обеспечивает защиту на уровне исходного модуля, где сделаны описания, то protected ограничивает доступ на уровне исходного класса, где были объявлены поля свойства и методы. Protected защищает свои описания от прямого использования объектами в других модулях.

Следующая директива — public, предназначена для объявления элементов, которые будут видны программе или модулю, если они имеют доступ к модулю, в котором объявлен класс. Поля, свойства и методы, описанные в разделе public, называются общедоступными или публичными. Их область видимости подчиняется рассмотренным правилам общего случая. Поля, свойства и методы, расположенные сразу после заголовка класса по умолчанию принимаются общедоступными.

Последняя директива — published. Она предназначена для объявления тех свойств, которые должны быть видны в инспекторе объектов на этапе проектирования. Поля, свойства и методы, описанные в разделе published, называются опубликованными. Их область видимости эквивалентна области видимости общедоступных описаний. Отличие состоит в том, что для опубликованных полей, свойств и методов генерируется дополнительная информация об их типе, которая доступна во время выполнения.

type

TProgressBar1 = class(TProgressBar)

private

{ Private declarations }

protected

{ Protected declarations }

public

{ Public declarations }

published

{ Published declarations }

end;

Наиболее часто применяемыми остаются две директивы – private и public. Рассмотрим пример на их использование:

Пример

unit Unit1;

interface

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);


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



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