Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  


Основы Delphi
Public
Деректива
Начинает внешне доступный раздел класса unit
  
type Class declaration
Public
  Field | Property | Method declaration
{...}
end;
Описание
Директива Public начинает раздел объявлений определения класса. В разделе public, Поля(Fields), Свойства(Properties) и Методы(Methods) объявлены как доступные для этого класса и классов, происходящих от этого, и код используют экземпляры класса. В Объектно-ориентированных терминах, объект класса кажется черным ящиком. Внутренние операции не уместны. Public и published поля, свойства и методы - внешне видимая часть объекта - управляемая доступом к внутренней организации класса.

Поскольку public и published доступ обеспечивает связь видов с внешним кодом, Вы должны избегать везде, где возможно, создание изменений в этих разделах.

Раздел Published очень похож на раздел Public, за исключением того, что он обеспечивает немного информацией во время выполнения.
Примечания
Предупреждение: избегайте делания полей публичными - всегда лучше вместо этого определить свойство для обращения к ним. Это обеспечивает некоторое разъединение от внутренней организации класса.
Похожие команды
Function  Определяет подпрограмму, которая возвращает значение

Private  Начинает частный (Private) раздел данных и методов в классе

Procedure  Определяет подпрограмму, которая не возвращает значение

Property  Определяет управляемый доступ к полям класса

Protected  Начинает раздел класса частных данных доступных подклассам

Published  Начинается изданный, внешне доступный раздел класса

Type  Определяет новую категорию переменной или процесса

 
Пример кода : Подкласс который использует public метод для обращения к внутренним данным и методам
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную Form1, которая имеет событие OnCreate названное FormCreate.

unit Unit1;

interface

uses
  Forms, Dialogs, Classes, Controls, StdCtrls, SysUtils;

type
  // Определение базового класса TSquare :
  // Он имеет частные данные, которые могут быть только установлены защищенным методом
  TSquare = class
  private           // Известный только родительскому классу
    squareArea : Integer;
  protected         // Известный всем классам в иерархии
    squareWidth, squareHeight : Integer;
    procedure setArea;
  Public            // Внешне видимый пользователями класса
    property width  : Integer read squareWidth;
    property height : Integer read squareHeight;
    property area   : Integer read squareArea;
  published         // Внешне видимый: имеет также информацию во время выполнения
    constructor Create(width, height : Integer);
  end;

  // Определение порожденного типа:
  // Он должен использовать защищенный родительский метод для установки
  // частной площади квадрата
  TChangeableSquare = class(TSquare)
  Public
    procedure ChangeSize(newWidth, newHeight : 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;

  // И вычисление площади квадрата
  setArea;
end;

// Изменение измерений TChnageableSquare
procedure TChangeableSquare.ChangeSize(newWidth, newHeight: Integer);
begin
  // Перезапись первоначальных значений ширины и высоты
  squareWidth  := newWidth;
  squareHeight := newHeight;

  // И пересчёт площади квадрата
  setArea;
end;

// Установка размера квадрата из его измерений
procedure TSquare.setArea;
begin
  // Вычисление площади квадрата и конфиденциальное сохранение
  squareArea := width * height;
end;

// Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
var
  mySquare : TChangeableSquare;
begin
  // Создание изменяемого квадрата
  mySquare := TChangeableSquare.Create(30, 40);

  // Какова сейчас площадь квадрата?
  ShowMessage('Квадрат 30,40 площадь = '+IntToStr(mySquare.area));

  // Изменение измерений квадрата
  mySquare.ChangeSize(10,20);

  // Какова сейчас площадь квадрата?
  ShowMessage('Квадрат 10,20 площадь = '+IntToStr(mySquare.area));
end;

end.
Квадрат 30,40 площадь = 1200
Квадрат 10,20 площадь = 200
 



© Форум Delphi   |  Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки   |  Английская версия