Введение в программирование. Pascal и Delphi. Гурьянов Л.В - 124 стр.

UptoLike

123
В данном примере доступ к значению свойства
SomeColor
осуществляется через вызовы методов GetColor и SetColor.
Однако в обращении к этим методам в явном виде нет необхо-
димости: достаточно написать, например:
AnObject. SomeColor :=
SomeValue;
SomeVariable := AnObject. SomeColor;
и компилятор самостоя-
тельно оттранслирует обращение к свойству
SomeColor в вызовы
методов
GetColor или SetColor.
В методах, входящих в состав свойств, может осуществляться
проверка устанавливаемой величины на попадание в допустимый
диапазон значений и вызов других процедур, зависящих от вносимых
изменений.
Если в описании свойства отсутствует writeто, значит, свойство
доступно только для чтения! Аналогично можно сконструировать
свойство только для записи.
Пример векторного свойства:
type
TRectangle = class
private
FCoordinates: array[0..3] of Longint;
function GetCoordinate(Index: Integer): Longint;
procedure SetCoordinate(Index: Integer; Value: Longint);
public
property Left: Longint index 0 read GetCoordinate write
SetCoordinate;
property Top: Longint index 1 read GetCoordinate write
SetCoordinate;
property Right: Longint index 2 read GetCoordinate write
SetCoordinate;
property Bottom: Longint index 3 read GetCoordinate write
SetCoordinate;
property Coordinates[Index: Integer]: Longint read
GetCoordinate
write SetCoordinate
;
end;
   В данном примере доступ к значению свойства SomeColor
осуществляется через вызовы методов GetColor и SetColor.
   Однако в обращении к этим методам в явном виде нет необхо-
димости: достаточно написать, например: AnObject. SomeColor :=
SomeValue;
   SomeVariable := AnObject. SomeColor; и компилятор самостоя-
тельно оттранслирует обращение к свойству SomeColor в вызовы
методов GetColor или SetColor.
   В методах, входящих в состав свойств, может осуществляться
проверка устанавливаемой величины на попадание в допустимый
диапазон значений и вызов других процедур, зависящих от вносимых
изменений.
   Если в описании свойства отсутствует write – то, значит, свойство
доступно только для чтения! Аналогично можно сконструировать
свойство только для записи.
   Пример векторного свойства:
   type
    TRectangle = class
   private
    FCoordinates: array[0..3] of Longint;
    function GetCoordinate(Index: Integer): Longint;
    procedure SetCoordinate(Index: Integer; Value: Longint);
   public
    property Left: Longint index 0 read GetCoordinate write
SetCoordinate;
    property Top: Longint index 1 read GetCoordinate write
SetCoordinate;
    property Right: Longint index 2 read GetCoordinate write
SetCoordinate;
    property Bottom: Longint index 3 read GetCoordinate write
SetCoordinate;
    property Coordinates[Index: Integer]: Longint read
GetCoordinate
   write SetCoordinate;
    end;



                                123