type Class declaration
Published
Field | Property | Method declaration
{...}
end;
Директива Published начинает раздел объявлений определения класса. В разделе Published, Поля(Fields), Свойства(Properties) и Методы(Methods) объявлены как доступные для этого класса и классов, происходящих от этого, и код используют экземпляры класса. И информация об этих доступах зарегистрирована в рантайм информации для класса.
Поскольку public и published доступ обеспечивает связь видов с внешним кодом, Вы должны избегать везде, где возможно, создание изменений в этих разделах.
|
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную Form1, которая имеет событие OnCreate названное FormCreate.
unit Unit1;
interface
uses
Forms, Dialogs, Classes, Controls, StdCtrls, SysUtils;
type
// Определение базового класса TSquare :
TSquare = class
private // Известный только внутренне
squareArea, squareWidth, squareHeight : Integer;
Published // Известный внешне: также имеет информацию во время выполнения
property width : Integer read squareWidth;
property height : Integer read squareHeight;
property area : Integer read squareArea;
constructor Create(width, height : Integer);
end;
// Определение класса формы используемой этим модулем
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm} // Вложение определений формы
// Создание объекта TSquare
constructor TSquare.Create(width, height: Integer);
begin
// Сохранение ширины и высоты
squareWidth := width;
squareHeight := height;
// И вычисление и сохранение площади квадрата
squareArea := width * height;
end;
// Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
var
mySquare : TSquare;
begin
// Создание объекта square
mySquare := TSquare.Create(30, 40);
// Каковы атрибуты квадрата ? :
ShowMessageFmt('Площадь квадрата = %d * %d = %d',
[mySquare.width, mySquare.height, mySquare.area]);
end;
end.
|