Секция реализации - "приватная" часть - начинается
зарезервированным словом implementation. Все, что описано в
секции интерфейса, является видимым в секции реализации:
константы, типы, переменные, процедуры и функции. Кроме того, в
секции реализации могут быть свои дополнительные описания,
которые не являются видимыми для программ, использующих этот
модуль. Программа не знает об их существовании и не может
ссылаться на них или обращаться к ним. Однако, эти скрытые эле-
менты могут использоваться (и, как правило, используются) "види-
мыми" процедурами и функциями, то есть теми подпрограммами, чьи
заголовки указаны в секции интерфейса.
Оператор uses может содержаться в секции реализации
(implementation) и должен непосредственно следовать за ключевым
словом implementation.
Обычные процедуры и функции, описанные в интерфейсной сек-
ции, то есть те из них, которые не являются подставляемыми
(inline), должны повторно указываются в секции реализации. Заго-
ловок procedure/function должен быть или идентичным тому, который
указан в секции интерфейса, или иметь более краткую форму. В слу-
чае краткой формы наберите ключевое слово (procedure или
function), а за ним укажите имя подпрограммы (идентификатор). За-
тем подпрограмма должна содержать все свои локальные описания
B.Pascal 7 & Objects /UG - 166 -
(метки, константы, типы, переменные и вложенные процедуры и функ-
ции), за которыми должно находиться основное тело самой подпрог-
раммы. Пусть в интерфейсной части указаны следующие описания:
procedure ISwap(var V1,V2 : integer);
function IMax(V1,V2 : integer) : integer;
Тогда Секция реализации будет иметь следующий вид:
procedure ISwap; var
Temp := integer;
begin
Temp := V1; V1 := V2; V2 := Temp
end; {конец процедуры Swap}
function IMax(V1,V2 : integer) : integer;
begin
if V1 > V2
then IMax := V1
else IMax := V2
end; { конец функции Max }
Подпрограммы, локальные для секции реализации (то есть не
описанные в секции реализации), должны иметь полный (несокращен-
ный) заголовок procedure/function