Руководство разработчика

Поля

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

<выражение объектного типа>.<имя поля>

Обычно в качестве выражения выступает переменная объектного типа.

В теле метода обращение к полям текущего объекта происходит простым указанием имени или с использованием ключевого слова САМ:

<имя поля>

или

САМ.<имя поля>

Непосредственное задание значений полей по имени возможно также в константах объектных типов. В теле методов и в константах объектного типа возможно обращение как к открытым полям, так и к закрытым. В остальных случаях – только к открытым (см. подробнее Открытые и закрытые части объектов).

Пример:

ТИП Шрифт
[
  // объявление полей типа Шрифт
  СТРОКА: название;
  ЧИСЛО: размер;
  
  ФУНКЦИЯ СТРОКА: ОтображаемыйТекст
    // обращение к полям текущего объекта Шрифт
    РЕЗУЛЬТАТ = название + ", " + СТР(размер)
  КОНЕЦ_ФУНКЦИИ 
]

ВЫЧИСЛИТЬ
  ПЕРЕМ Шрифт: ш
  // обращение к полям переменной "ш"
  ш.название = "Courier New"
  ш.размер = 11
  ОТЛАДКА(ш.ОтображаемыйТекст) // Courier New, 11
КОНЕЦ

Для каждого поля может быть задано значение по умолчанию. Это значение поле получает при создании объектного значения. Если значение по умолчанию не указано, то используется значение по умолчанию для типа поля.

Пример:

ТИП Шрифт
[
  СТРОКА: название = "Arial";
  ЧИСЛО: размер = 8;
  ЛОГИКА: жирный; // без значения по умолчанию, НЕТ - для типа ЛОГИКА
]

ВЫЧИСЛИТЬ
  ПЕРЕМ Шрифт: ш1 
    // "Arial", 8, НЕТ - все поля получили значения по умолчанию
  
  ПЕРЕМ Шрифт: ш2 = [ размер = 10, жирный = ДА ]
    // "Arial", 10, ДА - поле "название" получило значение по умолчанию
КОНЕЦ

Поля родительского типа наследуются дочерним типом. Тип поля не может быть изменен в дочернем типе, но может быть изменено значение по умолчанию.

Объявление поля в исходном тексте располагается внутри объявления объектного типа. Допускаются следующие варианты объявления:

<тип поля>: <имя поля>;
<тип поля>: <имя поля 1> [, <имя поля 2> [, ...]];
<тип поля>: <имя поля> = <константное выражение>;

для полей контейнерного типа:

<тип элемента>: <имя поля>[<типы индексов>];
<тип элемента>: <имя поля>[<типы индексов>] = <константное выражение>;

Для переопределения значения по умолчанию в дочернем типе объявление поля может быть повторено с другим значением. Также имеется возможность применения ключевого слова ПОДМЕНА, чтобы избежать повторного описания типа во всех деталях:

ПОДМЕНА <имя поля> = <константное выражение>;

Для всех вариантов объявлений и переопределений полей точка с запятой в конце обязательна.

Пример:

ТИП КоманднаяКнопка(КНОПКА)
[
  // свое поле
  СТРОКА: код_команды;
  
  // переопределение значения наследованного поля
  ПОДМЕНА нажатие = {.НажКоманднаяКнопка};
]

ФУНКЦИЯ НажКоманднаяКнопка(ПЕРЕМ КоманднаяКнопка: кнопка)
  кнопка.КОМАНДА(кнопка.код_команды)  
КОНЕЦ_ФУНКЦИИ

См. также: