Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование на Delphi. От новичка до профессионала! 12.3 Различие переменных, функций и процедур, включенных и н


Информационный Канал Subscribe.Ru


MyDelphi7 http://mydelphi7.narod.ru

 

12.3 Различие переменных, функций и процедур, включенных и не включенных в описание класса

Теперь посмотрим, чем различаются константы, переменные, функции и процедуры, включенные и не включенные в описание класса. В приведенном примере переменная Ch1 и процедуры F1 и F2 включены в описание класса, а переменные Ch2, Ch3 и процедуры F3 и F4 объявлены вне класса. В чем будет проявляться различие в их использовании?

Если в приложении создается только один объект данного класса (в нашем примере — только один объект формы класса TForm1), то различие в основном чисто внешнее. Для процедур, объявленных в классе, в их описании в разделе implementation к имени процедуры должна добавляться ссылка на класс. В нашем примере имена процедур F1, F2 и Button1CIick в описании этих процедур в разделе implementation заменяются на TForm1.F1, TForm1.F2 и TForm1.Button1Click. Для процедур F3 и F4, объявленных вне класса, такой замены не требуется.

Необходимость добавления к именам процедур, описанных в классе, ссылок на класс объясняется просто. Вы можете вне класса описать другую свою процедуру с тем же именем (например, F1), что и у процедуры класса. И тогда из процедур, не описанных в классе, вы сможете ссылаться на обе эти процедуры F1, только на одну из них непосредственно — по имени F1, а на другую через объект класса — Form1.F1. Благодаря этому, при описании своих процедур вне класса вы можете даже не знать имен всех процедур описанных в классе (может быть этот класс описан в другом модуле, текст которого вы не видели). Никакой путаницы при этом не возникнет.

Обращение к переменным и процедурам, описанным внутри и вне класса, из процедур, описанных вне класса, различается. К переменным и процедурам, описанным вне класса, обращение происходит просто по их именам, а к переменным и процедурам, описанным в классе, через имя объекта класса. Поэтому в нашем примере в процедурах я F4 обращение к переменной Form1.Ch1. По той же при
чине и обращение к свойству Caption объекта Label1 в этих процедурах имеет вид Form1.Label1.Caption. Только через ссылку на объект Form1 внешние по отношению к классу процедуры могут получить доступ ко всему, объявленному в классе.

Все эти ссылки на объект не требуются в процедурах, объявленных в классе. Поэтому в процедурах TForm1.F1, TForm1.F2 и TForm1.Button1CIick ссылки на временную Ch1 и на объект Label1 не содержат дополнительных ссылок на объект формы.

Если в приложении создается несколько объектов одного класса, например, несколько форм класса TForm1 (как вы увидите впоследствии, это часто делается : приложениях с интерфейсом множества документов MDI), то проявляются более принципиальные различия между переменными, описанными внутри и вне класса. Переменные вне класса (в нашем примере Ch2 и ChЗ) так и остаются в одном экземпляре. А переменные, описанные в классе (в нашем примере Ch1), тиражируются столько раз, сколько объектов данного класса создано. Т.е. в каждом объекте класса TForm1 будет своя переменная Ch1, и все они друг с другом никак не будут связаны. Таким образом, в переменную, описанную внутри класса, можно заносить какую-то информацию, индивидуальную для каждого объекта данного класса. А переменная, описанная в модуле вне описания класса, может хранить только одно значение.



Всё, что представлено в рассылке, копировать запрещено!
Сайт рассылки http://mydelphi7.narod.ru 
 

 

 



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное