Свойства
Свойства так же,
как и поля, определяют атрибуты объекта. Но в отличие от полей свойства реализуют
механизм доступа для чтения или изменения данных в полях объекта.
Вернувшись к примеру со
столом, можно сделать следующее сравнение: поле "количество ножек"
объекта "стол" будет хранить целое число, обозначающее
количество ножек, а свойство "ножки" объекта "стол "может
изменять это значение. С помощью данного свойства можно задать "количество
ножек" равным трем, четырем и т. д.
Свойства позволяют изменять
атрибуты объекта, в том числе, и вычисляемыми значениями. Объявление свойства
объекта должно содержать его имя и тип, а также, как минимум, одно объявление
способа доступа к данному свойству (описания). Синтаксис объявления свойства
объекта имеет вид:
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.