В основе ООП лежат понятия класса и его физической реализации – объекта.
Класс – это сложная структура (аналогичная типу), включающая в себя, помимо описания данных, описание подпрограмм (процедур и функций), которые могут быть выполнены над объектом, а также характеристики данных и подпрограмм.
Данные класса называются полями, подпрограммы – методами, а характеристики данных и подпрограмм – свойствами.
Обычно классы задаются в разделе объявления типов тех или иных модулей, и, чтобы их можно было использовать в программе и других модулях, эти объявления должны быть сделаны в интерфейсе модуля.
Класс объявляется на основе общего правила задания типов. Описание структуры класса в языке Оbjеct Pascal начинается с зарезервированного слова class, после которого в круглых скобках указывается имя родительского класса. Если он не указан, то предполагается, что родительским является класс TОbjеct, который в ООП-модели языка Object Pascal по умолчанию считается предком всех объявленных классов. Далее в виде отдельных строк записываются поля данных, методы и свойства. Завершается описание класса зарезервированным словом end. Если ни одного поля, метода или свойства у объявляемого класса нет, но указан непосредственный предок класса, зарезервированное слово end в конце объявления можно не писать. Последовательность записи отдельных элементов (поля, методы, свойства) класса безразлична (с учетом возможности использования одними элементами других), однако чаще всего сначала записываются поля, затем методы и, наконец, свойства.
Пример описания простого класса :
TTPerson=class
private
fname:string[15];
faddress:string[35];
public
procedure show;
end;
В приведенном примере TTPerson – это имя класса, fname и faddress – имена полей, show – имя метода.
Для методов в объявлении класса записываются только их заголовки. Само же тело методов описывается впоследствии - в исполнительной части модуля - так же, как это делается для подпрограмм в модулях.
В ряде случаев может оказаться, что два класса используют характеристики друг друга. В этом случае приходится использовать опережающее объявление одного из этих классов, аналогично тому, как это делается для подпрограмм с использованием директивы forward. При опережающем объявлении сначала записывается лишь имя класса и через знак равенства - зарезервированное слово class, например:
TObject = class;
Далее по тексту предварительно объявленный класс должен быть описан полностью в подходящем месте программы так же, как это делается без предварительного объявления.
Отдельные элементы класса могут иметь различные возможности по их использованию вне рассматриваемого класса (иметь разные области доступности или, иначе, видимости). В ООП DELPHI имеется несколько вариантов задания областей видимости, которые определяют разделы (секции) в описании класса и начинаются с ключевых слов private, public, protected, published и automated. Количество и порядок следования этих разделов могут быть произвольными.
Общую структуру описания класса можно представить следующим образом:
type
ИмяКласса = class(ИмяРодительскогоКласса)
Опубликованные поля, методы, свойства;
private
Скрытые поля, методы, свойства;
public
Общедоступные поля, методы, свойства;
protected
Защищенные поля, методы, свойства;
published
Опубликованные поля, методы, свойства;
automated
Поля, методы, свойства для OLE-объектов;
end;
Сноски:
9 Согласно принятому в DELPHI соглашению имена классов обычно (но необязательно!) начинаются с префикса T, а имена полей – с префикса F (или f). Смысл ключевых слов private, public поясняется ниже.
|