type Class declaration Private Data | Method declaration; {...} end;
Директива Private начинает раздел данных (полей) и подпрограмм (методы) класса, которые являются частными (внутренними) для этого класса. Это - жизненно важная часть Объектно-ориентированной концепции, в которой класс рассматривается как черный ящик - то, что используется внутри не уместно для внешнего использования. Указанные в частном (Private) разделе данные и подпрограммы используются другими подпрограммами только данного класса. Если частные данные нуждаются во внешнем доступе, то свойство public (или published) предоставят данный доступ. Частные (Private) данные и подпрограммы не доступны даже потомкам класса, чтобы обеспечить этот доступ вы должны использовать Protected. Защищенные (Protected) данные и методы внешне невидимы, но доступны для всех классов в иерархии.
|
// Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем Unit1 и с формой // названную Form1, которая имеет событие OnCreate названное FormCreate. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type // Класс с Индексированными свойствами TRectangle = class Private fCoords: array[0..3] of Longint; function GetCoord(Index: Integer): Longint; procedure SetCoord(Index: Integer; Value: Longint); public 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; end; // Сам класс формы TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} // Свойство TRectangle подпрограмма 'Получатель' 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 fCoords[Index] := Value; 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 ShowMessage('myRect coord '+IntToStr(i)+' = '+intToStr(myRect.GetCoord(i))); end; end.
|