Свойства

Свойства так же, как и поля, определяют атрибуты объекта. Но в отличие от полей свойства реализуют механизм доступа для чтения или изменения данных в полях объекта.

Вернувшись к примеру со столом, можно сделать следующее сравнение: поле "количество ножек" объекта "стол" будет хранить целое число, обозначающее количество ножек, а свойство "ножки" объекта "стол "может изменять это значение. С помощью данного свойства можно задать "количество ножек" равным трем, четырем и т. д.

Свойства позволяют изменять атрибуты объекта, в том числе, и вычисляемыми значениями. Объявление свойства объекта должно содержать его имя и тип, а также, как минимум, одно объявление способа доступа к данному свойству (описания). Синтаксис объявления свойства объекта имеет вид:

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.

Hosted by uCoz