Методы-функции и методы-процедуры — синтаксис объявления, реализация методов и варианты вызова методов


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

Синтаксис объявления процедур и функций:

Type
<имя класса>=Class[(<имя родительского класса»)] Procedure <имя процедуры>[(<параметры>)];
Function <имя функции>[(<параметры>)]: <тип результата>;
End;

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

Реализация методов
Синтаксис реализации методов-процедур и методов-функций:

Procedure <имя класса>.<имя процедуры>[(<параметры>}];
[<блок объявлении»} Begin
<Исполняемые операторы> End;

Function <имя класса>.<имя функции>[(<параметры>)}:<тип результата>
[<блок объявлений>]
Begin
<Исполняемые операторы>
Rеsи1t:=<возвращаемое значение>;
<Исполняемые операторы> End;

Примечания:
• Как всегда в теле функции должен быть хотя бы один оператор, присваивающий идентификатору функции либо предопределенной переменной Result возвращаемое значение.

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

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

Синтаксис вызова метода следующий:

<имя объекта>.<имя метода>[(<параметры>)];

Примечание:
• Вместо полного имени можно использовать также и оператор With, причем не требуется явно передавать методу активный экземпляр класса в параметре, поскольку это выполняется Delphi автоматически.


Комментарии запрещены.




Статистика