420________________________________________________Глава 7

странице My Components (первый параметр). Последний параметр является послед-
ним индексом массива регистрируемых компонентов.

Теперь рассмотрим коротко описание класса в заголовочном файле EditLet-
Num.h. Вы видите в нем разделы private, protected, public и _published. Они

определяют четыре варианта доступа к переменным, процедурам и функциям:

private (закрытые)       Процедуры и функции, определенные таким обра-
зом, доступны только в пределах данного модуля

protected (защищенные) Процедуры и функции, определенные таким обра-
зом, доступны в классах потомков

public (открытые)        Эти процедуры и функции доступны везде

_published             Процедуры и функции доступны везде и имеют
(опубликованные)        связь со средой разработки C++Builder, обеспечива-
ющую вывод на экран в Инспекторе Объектов стра-
ниц информации о свойствах и событиях

Вспомним (см. раздел 1.2 главы 1) наше определение объекта (компонент —
это объект) как совокупности свойств, методов и обработчиков событий. Причем
свойства — это совокупность полей данных и методов их чтения и записи. Вспом-
ним также принцип скрытия информации. Исходя из этого разработчик компо-
нента должен продумать, в какие разделы вставить вводимые им поля данных,
свойства и методы.

7.3.2.2 Свойства

Поля данных всегда должны быть защищены от несанкционированного досту-
па. Поэтому их целесообразно определять в private — закрытом разделе класса. В
редких случаях их можно помещать в protected — защищенном разделе класса,
чтобы возможные потомки данного класса имели к ним доступ. Традиционно
идентификаторы полей совпадают с именами соответствующих свойств, но с до-
бавлением в качестве префикса символа 'F'. Таким образом, в нашем примере вы
можете занести в раздел private объявления трех необходимых нам полей данных:

class PACKAGE TEditLetNum : public TEdit

{

// Закрытые элементы-данные класса

private:

bool FEnableNum;

bool FEnableLet;

bool FModified;

Теперь надо объявить свойства — методы чтения и записи этих полей. Свойст-
во объявляется оператором вида:

_property <тип> <имя> = {read=<MMH поля или метода чтения>
write=<HMfl поля или метода записи>
<директивы запоминания и значения по умолчанию>;

Если в разделах read или write записано имя поля, значит предполагается
прямое чтение или запись данных.

Если в разделе read записано имя метода чтения, то чтение будет осуществля-
ться только функцией с этим именем. Функция чтения — это функция без пара-
метра, возвращающая значение того типа, который объявлен для свойства. Имя
функции чтения принято начинать с префикса Get, после которого следует имя
свойства.