Классы в Delphi

   
На этом шаге мы напомним общие понятия о классах и рассмотрим описание
классов в Delphi.

   
Класс - это определенный пользователем тип данных, который
обладает внутренними
данными и методами в форме процедур или функций и обычно описывает
родовые признаки
и способы поведения рада похожих объектов.

   
Экземпляр типа класс принято называть объектом. Объекты
класса всегда
распределяются в куче в отличие от экземпляров объектового типа. Итак,
класс - это описание, объект - то, что создано в соответствии с этим
описанием.

   
Тип класс - это структура данных, состоящая из полей, методов,
свойств. Поля содержат
данные определенного типа. Методы - это функции и процедуры, описанные
внутри класса
и предназначенные для операций над его полями. Свойства - это специальный
механизм классов,
регулирующий доступ к полям. Свойство описывает один или два метода,
которые осуществляют некоторые
действия над данными того же типа, что и свойство. Например, обычная кнопка
в окне приложения
обладает такими свойствами, как цвет, размеры, положение. Для экземпляра
класса "кнопка"
значения этих свойств представлены специальными переменными,
определяемыми ключевым словом Property. Цвет
может задаваться свойством Color, размеры - свойствами Width
и Height и т.д.

   
Так как свойство обеспечивает обмен данными с внешней средой, то для
доступа к его
значению используются специальные методы класса. Например:

  Туре 
    TMyObject = class(TObject)
        Function GetColor : ТSomeType; 
        Procedure SetColor (ANewValue: TSomeType); 
        Property MyColor : TSomeType Read GetColor Write SetColor; 
    end;

   
Для того чтобы использовать новый тип в программе, нужно объявить
переменную этого типа:

  Var
    MyObjесt: TMyObjесt;

   
В данном примере доступ к значению свойства MyColor осуществляется
через вызовы
методов GetColor и SetColor. К методам в явном виде не
обращаются, достаточно
записать:

  MyObject.MyColor := <значение>;
           или 
  <переменная>:= MyObject.MyColor;

и компилятор оттранслирует эти операторы в вызовы соответствующих методов:
записи
(SetColor) и чтения (GetColor).

   
Особым видом свойств являются события. В Object Pascal
событие -
свойство процедурного типа, предназначенное для создания пользовательской
реакции на
то или иное входное воздействие:

  Property OnMyEvent: TMyEvent Read FOnMyEvent1 Write FOnMyEvent2 default asValue;  

Здесь:

  • OnMyEvent - имя свойства;
  • TMyEvent - тип свойства;
  • FOnMyEvent1 - поле процедурного типа. Вызывается при чтении
    значения свойства;
  • FOnMyEvent2 - поле процедурного типа. Вызывается при записи
    нового значения свойства;
  • asValue - значение свойства по умолчанию (может отсутствовать).

   
FOnMyEvent1, FOnMyEvent2 - поля, содержащие адреса некоторых
методов. Присвоить такому
свойству значение - значит, указать объекту адрес метода, который будет
вызываться
в момент наступления события. Такие методы называют
обработчиками событий.
Таким образом, обработчик события - фрагмент программы, который
выполняется в ответ на определенное изменение в программе или в
Windows.

   
Каждый новый класс в Delphi должен быть объявлен глобально. Для
этого используется зарезервированное
слово Class. Объявление определяет функциональные возможности
класса. Объявление классов в
модуле производится в разделе объявления типов. Пример объявления класса и
объекта в
Delphi:

  Туре
    TForm1 = class (TForm) 
               Label1: TLabel; 
               Edit1: TEdit; 
               CloseBtn: TBitBtn; 
               OkBtn: TBitBtn; 
             end; 
  Var
     Form1 : TForm1;

   
В объявлении типа определен новый класс - TForm1, наследуемый от
класса TForm,
содержащегося в библиотеке визуальных компонентов. На это указывает
зарезервированное слово
Class. Данный тип содержит указатели на компоненты, которые были
помещены на
форму:

  • один компонент Label1 - объект типа TLabel (иначе говоря,
    экземпляр класса TLabel),
  • один компонент Edit1 - объект типа TEdit (экземпляр класса
    TEdit) и
  • два экземпляра класса TBitBtn.

   
Область видимости идентификатора компонента, объявленного в описании
класса, простирается
от его объявления до конца определения класса, а также распространяется на
все потомки
этого класса и на все блоки реализации методов класса. Область видимости
идентификатора компонента
зависит от раздела, в котором объявлен этот идентификатор.

   
В объявлениях типов класса имеются разделы частных (private), общих
(public),
защищенных (protected) и опубликованных (published)
объявлений.

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

   
Поля данных и методы, объявленные в разделе общих
объявлений, доступны для
всех процедур, программный код которых расположен в области видимости
данного объекта. В разделе общих
объявлений должны быть объявлены поля данных и методы, к которым будут
иметь
доступ методы других классов.

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

   
Свойства, расположенные в разделе опубликованных
объявлений, отображаются в Инспекторе объектов
(Object Inspector).

   
На следующем шаге мы поговорим об иерархии классов.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий