Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
10 Классы испр.doc
Скачиваний:
20
Добавлен:
27.10.2018
Размер:
94.21 Кб
Скачать

2.1. Поля

Поля объекта аналогичны полям записи. Это данные, уникальные для каждо­го экземпляра класса. Поле объявляется как обычная переменная и может быть любого типа, например, integer, Char, String.

Пример объявления полей:

Type TnewClass = class (TObject);

Private

FCode : integer;

FSimv : char;

FStroka : string;

End;

В примере новый класс создается на основе базового класса TObject и полу­чает 3 новых поля: FCode, FSimv, FStroka. Для защиты полей целесообразно объ­являть их в защищенном разделе (например, в Private). В Delphi принято имена полей именовать начиная с буквы F (от Field - поле).

При создании новых классов на базе ранее созданных класс-потомок насле­дует все поля класса-родителя. Удаление и переопределение полей невозможно. Допускается добавление новых полей.

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

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

В Delphi у всех стандартных классов все поля недоступны и заменены бази­рующимися на них свойствами. Свойства компонентов Delphi определяют их внешний вид и поведение.

2.2. Свойства

Свойства - это высокоуровневые атрибуты компонентов класса.

В объектах Delphi пользователь полностью отгорожен от полей объекта с по­мощью свойств. Внешне свойства (property) напоминают поля, но внутри со­держат методы, обеспечивающие доступ к свойствам. При каждом обращении к такому методу выполняются соответствующие действия, т.е. к свойствам клас­са доступ возможен только через методы.

Каждому свойству соответствует поле, содержащее значение свойства, и 2 ме­тода, обеспечивающих доступ к значению поля. Описание свойства начинается словом property. Ключевые слова read и write зарезервированы в объявлении свой­ства и служат для указания методов класса, с помощью которых осуществляется чтение и запись значения в поле.

Пример объявления свойств:

Type TnewClass = class (TObject);

Private

FCode : integer;

FSimv : char;

FStroka : string;

Publiched

Poperty Code : integer read FCode write FCode;

Poperty Simv : char read FSimv write FSimv;

Property Stroka : string read FStroka write FStroka;

End;

Для доступа к полям FCode, FSimv, FStroka используются свойства Code, Simv и Stroka.

3. Методы

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

procedure имя-метода (<список параметров>);

Для того чтобы вызвать метод объекта, надо иметь доступ к экземпляру этого объекта. Вызов методов и использование в них параметра Self аналогичны тако­вым в языке Pascal. Форма вызова методов:

Имя-экземпляра-класса.имя-метода (список фактических параметров);

Примеры вызова методов:

Formt.Create; Forml. Close; ListBoxt.Clear;

Application.CreateForm(TForm1, Forml);'

Object Pascal Delphi поддерживает 4 типа методов: переопределяемые (override), виртуальные (virtual), динамические (dynamic) и абстрактные (abstract). По умолчанию все методы класса являются статическими и вызываются как обычные подпрограммы. Они допускают переопределение в классах-потомках.

Виртуальные методы имеют при описании слово virtual. Для виртуальных методов обязателен конструктор, с помощью которого формируется VMT (Virtual Method Table - таблица виртуальных методов). VMT - это массив указа­телей, по одному указателю на каждый из объявленных в классе виртуальных методов. Вызов виртуальных методов формируется с помощью VMT во время выполнения программы. Это несколько замедляет выполнение программы.

Динамические методы - это разновидность виртуальных методов, которая функционально эквивалентна виртуальным методам, но отличается реализацией. При использовании динамических методов формируется и используется DMT (Dynamic Method Table - таблица динамических методов). Она эффективнее ис­пользует ОП и содержит для каждого динамического метода указатель и индекс (номер метода в классе). Динамические методы вызываются еще медленнее, но позволяют более экономно расходовать ОП.

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