Описание |
Ключевое слово Property определяет управляемый доступ к полям класса.
Внутренняя организация объекта должна быть скрыта для внешней стороны, это объектно-ориентированного концепция. Пока вы позволяете полям (данным) в классе быть внешне непосредственно доступными (помещая в public или published разделы), это будет являться, по крайней мере, неблагоразумно. Вместо этого, Property может использоваться, чтобы определить, как данные читаются и написаны.
Версии 1, 2 и 3: Эти основные формы определяют доступ чтения, записи или чтения и записи для полей класса. Данные Type возвращают из поля или метода вызванного Получателем. Данные модифицируются через поле или метод Установщик.
Обратите внимание, что Вы должны использовать отличное название для Name от "Getter" и "Setter". Например: Property Age read fAge write fAge; Вы можете использовать имена полей, когда не требуется обработка поиска и проверки. При использовании метода чтения или записи, считанное или записанное значение могут быть намного более просты, чем сохраненное значение. Сохраненное значение может быть полностью различным.
Версии 4, 5 и 6: Использование ключевого слова Index говорит Delphi, чтобы он передал значение Constant как параметр методов Получателя и Установщика. Они должны быть функциями, которые получают это постоянное индексное значение как параметр.
Например: Property Item2 : string Index 2 read ItemGetter; где ItemGetter определен как: Function ItemGetter(Index : Integer) : string; Значение Default обеспечивает информацию для свойства во время выполнения. NoDefault - нет. Stored находится вне области основ Delphi.
Версии 7, 8 и 9: Это - обобщенная версия версий 4,5 и 6. Она просит пользователя указать индексное значение для методов Getter и Setter.
Default позволяет вызовам метода Getter и Setter быть замененными как в следующем примере: myValue := MyClass.Getter(23); может быть заменено : myValue := MyCLass[23];
Версия 10: Позволяет реализации Интерфейс(Interface) метода быть делегированной в свойство. Доступ к свойству, вызывает выполнение интерфейса.
Версия 11: Повторно объявляя свойство родительского класса, вы можете сделать так в public или published пункте, таким образом, поднимая права доступа свойства.
Версии 12, 13 и 14: уместны для dispinterfaces, которые находятся вне области основ Delphi.
|
|
Похожие команды |
Index Определяет преимущественно индексированные классы свойств данных
Private Начинает частный (Private) раздел данных и методов в классе
Protected Начинает раздел класса частных данных доступных подклассам
Public Начинает внешне доступный раздел класса
Published Начинается изданный, внешне доступный раздел класса
| |
|
Пример кода : Иллюстрирование основных и индексированных свойств |
// Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем Unit1 и с формой // названную Form1, которая имеет событие OnCreate названное FormCreate.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type // Класс с Индексированными свойствами
TRectangle = class
private
fArea : LongInt;
fCoords : array[0..3] of Longint;
function GetCoord(Index: Integer): Longint;
procedure SetCoord(Index: Integer; Value: Longint);
public
Property Area : Longint read fArea;
Property Left : Longint Index 0 read GetCoord write SetCoord;
Property Top : Longint Index 1 read GetCoord write SetCoord;
Property Right : Longint Index 2 read GetCoord write SetCoord;
Property Bottom : Longint Index 3 read GetCoord write SetCoord;
Property Coords[Index: Integer] : Longint read GetCoord write SetCoord;
constructor Create;
end;
// Сам класс формы
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// Свойство TRectangle подпрограмма 'Получатель' // Конструктор TRectangle
constructor TRectangle.Create;
begin // Задание координат прямоугольника по умолчанию
left := 0;
right := 100;
top := 0;
bottom := 100;
fArea := 100 * 100;
end;
function TRectangle.GetCoord(Index: Integer): Longint;
begin // Только разрешенные допустимые индексные значения
if (Index >= 0) and (Index <= 3)
then Result := fCoords[Index]
else Result := -1;
end;
// Свойство TRectangle подпрограмма 'Установщик'
procedure TRectangle.SetCoord(Index, Value: Integer);
begin // Только разрешенные допустимые индексные значения
if (Index >= 0) and (Index <= 3)
then
begin // Сохранений нового значения
fCoords[Index] := Value;
// И обновление площади прямоугольника
fArea := (right - left) * (bottom - top);
end;
end;
// Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
var
myRect : TRectangle;
i : Integer;
begin // Создание моего маленького прямоугольника с заданными по умолчанию координатами
myRect := TRectangle.Create;
// И установка угловых координат myRect.Left := 22; // Левых используя прямой метод
myRect.Top := 33; myRect.SetCoord(2,44); // Правых используя индексированный метод
myRect.SetCoord(3,55);
// И спрос этих значений
for i:= 0 to 3 do
ShowMessageFmt('myRect coord %d = %d',[i,myRect.GetCoord(i)]);
// И показ площади прямоугольника
ShowMessageFmt('площадь myRect= %d',[myRect.Area]);
end;
end.
|
myRect coord 0 = 22
myRect coord 1 = 33
myRect coord 2 = 44
myRect coord 3 = 55
площадь myRect = 484
|
|