Область видимости

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

Модификатор доступа Описание Элементы, которые можно объявить с данным модификатором Контекст объявления, в котором можно использовать модификатор
Public Модификатор указывает на доступность элемента в любом месте кода текущего модуля, во всех модулях сборки, а также в модулях, для которых текущий модуль подключен по ссылке. класс, модуль, пространство имен, интерфейс
Private Модификатор доступа указывает на доступность элемента только в контексте его объявления. Данный модификатор позволяет полностью скрыть детали внутренней реализации различных структур. класс, модуль, пространство имен, интерфейс
Protected Модификатор доступа указывает на доступность элемента внутри класса, а также во всех классах, производных от данного. класс, интерфейс
Friend Модификатор доступа указывает на доступность элемента в любом месте кода текущего модуля, а также во всех модулях текущей сборки.
Элементы с модификатором Friend будут недоступны во внешних сборках.
класс, интерфейс
Protected Friend Модификаторы доступа, используемые вместе, указывают, что к элементам можно обратиться из любого модуля текущей сборки, а также из класса, производного от данного, но находящегося в модуле другой сборки. класс, интерфейс

Пример

Для выполнения примера необходимо выполнить следующее:

  1. Создать новую сборку.

  2. В сборке создать новый модуль и форму.

  3. На форме разместить компоненты Button и EditBox с наименованиями "Button1" и "EditBox1" соответственно. Для кнопки создать обработчик события OnClick.

  4. В модуле и обработчике события указать следующий код:

Class TestObject: Object

Private s: String;

//Свойство Name

Friend Property Name: String

Get

Begin

Return s;

End Get

Set

Begin

s := Value;

End Set

End Property Name;

//Проверка установленного наименования

Friend Function TestName: Integer;

Begin

If s = "" Then

Return - 1

Else

Return TestStructure;

End If;

End Function TestName;

//Функция для поиска в наименовании двойных символов

Protected Function TestStructure: Integer;

Var

i: Integer;

Begin

For i := 65 To 122 Do

If s.IndexOf(Char.Chr(i) + Char.Chr(i)) <> -1 Then

Break;

End If;

End For;

If i <> 123 Then

Return 0;

Else

Return 1;

End If;

End Function TestStructure;

End Class TestObject;

 

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);

Var

Obj: TestObject;

i: Integer;

Begin

Obj := New TestObject.Create;

Obj.Name := EditBox1.Text;

i := Obj.TestName;

If i = -1 Then

WinApplication.InformationBox("Наименование не установлено");

Elseif i = 0 Then

WinApplication.InformationBox("Наименование содержит дублирующиеся символы");

Elseif i = 1 Then

WinApplication.InformationBox("Наименование корректно");

End If;

End Sub Button1OnClick;

 

После запуска формы при нажатии на кнопку будет создан новый объект пользовательского класса TestObject. Для объекта будет установлено свойство Name. Данное свойство реализовано в классе TestObject и доступно на чтение и запись в любом модуле текущей сборки. В качестве значения свойства Name будет установлен текст, введенный в компонент "EditBox1". Само значение наименования будет храниться в переменной "s". Переменная "s" доступна только в классе TestObject.

После установки будет осуществлена проверка наименования. Для проверки будет вызвана функция TestName, также доступная в любом модуле текущей сборки. Если установленное наименование не пустое, то из функции TestName будет вызвана дополнительная функция TestStructure. Функция TestStructure осуществляет проверку наименования на наличие дублирующихся символов английского языка. Данная функция будет доступна внутри класса TestObject, а также во всех классах, производных от него.

После проверки наименования будет выдано соответствующее сообщение о его корректности.

См. также:

Описания и синтаксические правила