Теперь остановимся на вопросе об областях видимости элементов программы — констант, переменных, функций и процедур, то есть о связи места их объявления в программе и места их использования. Частично мы уже затрагивали этот вопрос в предыдущем разделе, не упоминая о самом понятии области видимости.
Видимость отдельных элементов модуля, описанного в разделе, поясняется подробными комментариями в тексте этого модуля:
● Элементы, объявленные в разделе i nterface модуля вне описания типа, видимы и доступны внутри данного модуля и из внешних модулей.
● Элементы, объявленные в разделе implementation модуля, видимы и доступны внутри данного модуля, но недоступны из внешних модулей.
● Элементы, объявленные в классе в разделе private, видимы и доступны только внутри данного модуля. При этом из процедур, объявленных внутри класса, к ним можно обращаться непосредственно по имени, а из других процедур — только со ссылкой на объект данного класса. Если в модуле описано несколько классов, то объекты этих классов взаимно видят элементы, описанные в их разделах private.
|
|
● Элементы, объявленные в классе в разделе public, видимы и доступны для объектов любых классов и для других модулей. При этом из объектов того же класса к ним можно обращаться непосредственно по имени, а из других объектов и процедур — только со ссылкой на объект данного класса.
● В классах, помимо обсуждавшихся ранее, могут быть еще разделы protected (защищенные). Элементы, объявленные в классе в разделе protected, видимы и доступны для любых объектов внутри данного модуля, а также для объектов классов — наследников данного класса в других модулях. Объекты из других модулей, классы которых не являются наследниками данного класса, не видят защищенных элементов.
● Элементы, объявленные внутри другой процедуры являются локальными, то есть они видимы и доступны только внутри данной процедуры или внутри процедур, вложенных в данную. При этом время жизни переменных, объявленных внутри процедуры, определяется временем выполнения этой процедуры.
Компоненты