Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Обучение - Классы

Автор: Вычегжанин Сергей
WEB-сайт: http://daddy.mirgames.ru

В языке Object Pascal (на котором построен Delphi) классы являются специальными типами данных и используются для описания объектов. Соответственно объект, имеющий тип какого либо класса, является экземпляром этого класса или переменной этого типа. Класс представляет собой тип записи, имеющий в своём составе такие элементы, как поля, свойства и методы. Поле класса аналогичны полям записи и служат для хранения информации об объекте. Методами называются процедуры и функции, предназначенные для обработки полей. Свойства что-то среднее между полями и методами. С одной стороны, свойства можно использовать как поля, например, присваивая им значения с помощью оператора присваивания, с другой стороны, внутри класса доступ к значениям свойств выполняются методами класса. Описания класса имеют следующую структуру:

type
  Имя класса = class(Имя класса - родителя)
  private
    Частные описания
    protected
    Защищённые описания
    public
    Общедоступные описания
    published
    Опубликованные описания
  end;

Порядок наследования классов таков: при создании новых классов класс-потомок наследует все поля родителя, при этом удаление или переопределение этих полей невозможно.

Поля.

Поле класса представляет собой данные, содержащиеся в классе. Поле описывается как обычная переменная и может принадлежать к любому типу.

В ниже приведённом примере к стандартным полям класса TObject добавляется ещё 9 полей и одно событие.

Согласно принятому соглашению, имена полей должны начинаться с префикса F (от англ. Filed - поле).

Свойства.

Свойства реализуют механизм доступа к полям. Каждому свойству соответствует поле, содержащее значение свойства, и два метода, обеспечивающих доступ к этому полю. Описание свойства начинается со слова property. Работа с полем происходит с помощью двух зарезервированных методов (read и write) использующихся для чтения значения поля, связанного со свойством, или записи нового значения.

В приведённом примере используется 9 свойств, по одному на каждое поле.

Методы.

Метод это обычная функция или процедура. Заголовок метода располагается в описании класса, а сам код метода находится в разделе реализации.

Вот посмотрите пример описание класса кнопки из игры "В осаде":

TDXButton = class
  //Имя класса-родителя не определенно, значит класс потомок TObject
private //Частные описания
  FSelected: Boolean; //Поля
  FEnabled: Boolean;
  FHighLighted: Boolean;
  FCaption: string;
  FX: Integer;
  FY: Integer;
  FWidth: Integer;
  FHeight: Integer;
  FVisible: Boolean;
protected //Защищённые описания
  function GetBoundsRect: TRect; //Метод
public //Общедоступные описания
  FOnClick: TNotifyEvent; //Событие
  procedure DoDraw; virtual; //Процедура (метод)
  constructor Create; virtual; //Конструктор...
  destructor Destroy; override; //... и деструктор объекта
  property BoundsRect: TRect read GetBoundsRect; //Свойства
  property Selected: Boolean read FSelected write FSelected;
  property Enabled: Boolean read FEnabled write FEnabled;
  property HighLighted: Boolean read FHighLighted write FHighLighted;

  property X: Integer read FX write FX;
  property Y: Integer read FY write FY;
  property Width: Integer read FWidth write FWidth;
  property Height: Integer read FHeight write FHeight;
  property Visible: Boolean read FVisible write FVisible;
end;

Здесь класс TDXButton создаётся на основе класса TObject который является базовым классом для всех классов, поэтому его имя не указано как имя класса-родителя.

Этот класс содержит 10 полей: 9 из которых находятся в private секторе, а 1 в protected. Он также содержит 2 метода и 9 свойств находящейся в области public и используются для доступа к первым 9 полям.

А вот ещё описание графической кнопки на основе TDXButton (без комментариев):

TDXImageButton = class(TDXButton)
private
  FImage: TPictureCollectionItem;
protected
  function GetDrawImageIndex: Integer;
public
  constructor Create; override;
  procedure DoDraw; override;
  procedure OnMouseUp;
  procedure OnMouseMove(x, y: integer);
  procedure OnMouseDown(x, y: integer);
  property OnClick: TnotifyEvent read Fonclick write fonclick;
  property Image: TPictureCollectionItem read FImage write FImage;
  property Caption: string read FCaption write FCaption;
end;

В общем здесь всё достаточно легко и понятно, удачи!

Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.