Свойства. Совокупность данных и методов их чтения и записи называетсясвойством

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

Свойства внешне напоминают поля класса, но на самом деле представляют собой механизм, регулирующий доступ к полям. Как правило, свойство связано с некоторым полем класса и указывает те методы класса, которые должны быть использованы при чтении из этого поля либо при записи в него. Если определен метод доступа для чтения, то он должен быть функцией без параметров, которая возвращает значение того же са­мого типа, что и свойство. Имя функции, предназначенной для чтения, принято начинать с приставки Get, после которой следует имя свойства. Метод, используемый для записи, должен быть процедурой, имеющей один параметр. Этот параметр должен быть того же типа, что и свойство. Имя процедуры, предназначенной для записи, принято начинать с приставки Set, после которой следует имя свойства.

Для объявления свойства используются зарезервированные слова property, read и write. Слова read и write обозначают начало разделов, содержащих имена методов, предназна­ченных для чтения и записи соответственно. Например

type

TStudent = class

FAge: integer;

function GetAge: integer;

procedure SetAge(Value: integer);

property Age: integer read GetAge write SetAge;

end;

Здесь Age - свойство, связанное с полем FAge, GetAge и SetAge - методы, предназ­наченные соответственно для чтения и записи в поле FAge.

Для обращения к свойству в тексте программы, так же, как для полей и методов, не­обходимо использовать составные имена, состоящие из имени объекта, точки и имени свойства, например:

var

GoodStudent: TStudent;

HisAge: integer;

begin

GoodStudent:= TStudent.Create;

GoodStudent.Age:= 19;

HisAge:= GoodStudent. Age;

GoodStudent.Free;

end;

Использование свойств, в отличие от непосредственного использования полей, позво­ляет осуществлять различные дополнительные действия. Например, мы могли бы непос­редственно поместить в поле FAge нужное значение

GoodStudent.FAge:= 19;

Но, используя свойство Age, мы можем реализовать в методах, предназначенных для чтения и записи GetAge и SetAge, различные дополнительные действия: проверку вводи­мых значений на принадлежность к заданному диапазону, выдачу сообщений на экран, изменение внешнего вида объекта на экране и т.д.

В тех случаях, когда дополнительные действия при чтении или записи в поле не нуж­ны, вместо имени соответствующего метода можно указать имя поля:

type

TStudent = class

FAge: integer;

procedure SetAge(Value: integer);

property Age: integer read FAge write SetAge;

end;

Поля могут быть доступны только для чтения или только для записи. В этом случае при описании свойства опускаются разделы read или write. Например, если мы хотим, чтобы свойство Age было доступным только для чтения, нам необходимо убрать раздел write:

type

TStudent = class

FAge: integer;

function GetAge: integer;

property Age: integer read GetAge;

end;

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: