Свойства
Свойства так же,
как и поля, определяют атрибуты объекта. Но в отличие от полей свойства реализуют
механизм доступа для чтения или изменения данных в полях объекта.
Вернувшись к примеру со
столом, можно сделать следующее сравнение: поле "количество ножек"
объекта "стол" будет хранить целое число, обозначающее
количество ножек, а свойство "ножки" объекта "стол "может
изменять это значение. С помощью данного свойства можно задать "количество
ножек" равным трем, четырем и т. д.
Свойства позволяют изменять
атрибуты объекта, в том числе, и вычисляемыми значениями. Объявление свойства
объекта должно содержать его имя и тип, а также, как минимум, одно объявление
способа доступа к данному свойству (описания). Синтаксис объявления свойства
объекта имеет вид:
property Имя свойства:
тип описания;
имя свойства
должно
быть уникальным;тип
—
определяет, значения какого типа могут быть записаны в данном свойстве; описания
— объявления способов доступа к данному свойству. Каждое свойство объекта
должно иметь, как минимум, одно обязательное объявление способа доступа к свойству.
Имеется два обязательных описания доступа к свойству объекта: чтение (read
)
значения свойства и запись (write
) значения свойства.
Синтаксис обязательных
описаний read
и write
имеет следующий вид:
read поле
илиметод
или
write поле метод
где поле
или
метод
— поле, из которого берется или в которое помещается значение
свойства, или метод, который берет или помещает значение свойства компонента.
Несложно догадаться, что
объявление read
(читать) описывает поле или метод, предназначенные
для чтения значения свойства, а объявление write
(писать) описывает
поле или метод, предназначенные для записи значения свойства компонента.
В листинге 5.1 приведен
пример описания свойств объекта.
Листинг 5.1. Описание
свойств объекта
type TMyObject = class // Объявление нового класса private
FInt: integer; // Объявление целочисленного поля FReal: real; // Объявление вещественного поля FChar: char; // Объявление поля символьного типа published
property Prop1: integer read FInt write FInt; // Объявление // свойства Prop1, с помощью которого можно читать значение поля // FInt и записывать данные в это же поле
property Prop2: real read FRea1; // Свойство Ргор2 предназначено // только для чтения значения поля FReal
property РrорЗ: char write FChar; // Свойство Рrор3 предназначено // только для записи данных в поле FChar end;
После такого объявления
программист получает доступ к полям объекта через три свойства Prop1,
Prop2
и Рrор3
.