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

Методы

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

Также имеется возможность обращения не к отдельным полям, а ко всему объекту, для которого вызван метод. Для этого используется ключевое слово САМ.

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

При наследовании объектных типов методы могут переопределяться в типах-потомках. При переопределении метода должны в точности сохраняться типы параметров и тип результата. Переопределение методов делает возможным полиморфное поведение объектов. В теле переопределенного метода можно вызывать методы типов-предков с помощью ключевого слова РОДИТЕЛЬ.

В объектном типе должны быть обязательно переопределены все методы всех его базовых интерфейсов. В отличие от методов родительского типа, у методов интерфейсов нет определения (т.н. абстрактные методы), поэтому объектный тип обязан предоставить их определения. Совокупность определений методов, объявленных в интерфейсе, называется реализацией интерфейса, т.е. объектный тип реализует все свои базовые интерфейсы.

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

И объявление метода, и его определение начинается с ключевого слова ФУНКЦИЯ. Далее следует тип результата, если метод возвращает результат. После этого указывается имя метода. Если метод принимает параметры, то за именем указывается список параметров в круглых скобках. Чистое объявление метода на этом заканчивается и требует точки с запятой. В случае определения метода после имени или списка параметров следует тело метода, содержащее различные операторы. Тело метода завершается ключевым словом КОНЕЦ_ФУНКЦИИ.

Синтаксис:

Совмещение объявления и определения метода

ФУНКЦИЯ [<тип результата>:] <имя метода> [(<список параметров>)]
<операторы текста метода>
КОНЕЦ_ФУНКЦИИ

Объявление метода

ФУНКЦИЯ [<тип результата>:] <имя метода> [(<список параметров>)];

Определение метода вне области объявления объектного типа

ФУНКЦИЯ [<тип результата>:] <имя типа>.<имя метода> [(<список параметров>)];

Пример:

ФУНКЦИЯ СТРОКА: ЗаданиеИмени(СТРОКА: имя, фамилия; ЦЕЛОЕ: номер)
  РЕЗУЛЬТАТ = СТР(номер) + " " + имя + фамилия
  СООБЩЕНИЕ(РЕЗУЛЬТАТ)
КОНЕЦ_ФУНКЦИИ

См. также: