Принципы объектно-ориентированного визуального программирования_____47

Доступ к элементам класса (данным — свойствам и функциям — методам)
обеспечивается одним из следующих двух способов. Можно использовать опера-
цию стрелка (символ «-» и символ «>», записанные без пробела, т. е. ->) или опе-
рацию точка (.). Первая из них применяется при обращении к объекту через указа-
тель на него, вторая — при обращении по имени переменной объекта или по ссыл-
ке на него.

Посмотрите, например, в приведенном выше файле реализации модуля тексты
функций F1 и F2. Вы увидите в них выражения вида Labell->Caption. Они означа-
ют: свойство Caption объекта Labell. To же самое свойство Caption можно было бы
получить и с помощью выражения (*Labell).Caption. Здесь операция разыменова-
ние указателя (*Labell) дает сам объект, к которому можно применять операцию
точка.

Хотя эти два способа доступа к свойствам и методам объекта эквивалентны,
обычно в C+4-Builder используется операция стрелка. Поэтому в дальнейшем изло-
жении в данной книге мы практически всегда будем пользоваться этой формой за-
писи. И если вы не очень представляете себе, что такое указатели, и не хотите пока
смотреть пояснения в главе 12 в разделе 12.7, то просто запомните, что ко всем
свойствам и методам объектов надо обращаться, включая перед ними символы
«->».

Иногда свойство объекта является в свою очередь объектом. Тогда в обраще-
нии к этому свойству указывается вся цепочка предшествующих объектов. Напри-
мер, метки имеют свойство Font — шрифт, которое в свою очередь является объек-
том. У этого объекта имеется множество свойств, в частности, свойство Color —
цвет шрифта. Чтобы сослаться на цвет шрифта метки Labell, надо написать La-
bell->Font->Color (см. в тексте примера функцию TForml::ButtonlClick). Это
означает: свойство Color объекта Font, принадлежащего объекту Labell.

Аналогичная нотация используется и для доступа к методам объекта. Напри-
мер, для метки, как и для большинства других объектов, определен метод Destroy,
который уничтожает метку и освобождает занимаемую ею память. Если вы в ка-
кой-то момент решили уничтожить метку Labell в своем приложении, то вы мо-
жете написать оператор

Labell->Destroy() ;

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

Предупреждение —————————————————————————————————————

Обращение к объекту, удаленному из памяти методами Destroy, Free или ключевым сло-
вом delete, вызывает ошибку и аварийное завершение выполнения программы.

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

Теперь посмотрим, чем различаются переменные и функции, включенные и не
включенные в описание класса. Переменные и функции, включенные в описание
класса, обычно называются соответственно данными-элементами и функция-
ми-элементами. Применительно к объектно-ориентированному проектированию в
C++Builder чаще их называют свойствами и методами. В приведенном в разде-
ле 1.6.5.1 примере переменная СЫ и функции F1 и F2 включены в описание клас-
са, а переменные СЬ2, СЬЗ и функции F3 и F4 объявлены вне класса. В чем будет
проявляться различие в их использовании?