Основным понятием ООП и элементом программ является объект. Любая объектно-ориентированная программа состоит из двух частей:
1) декларативной части программы (описания объектов);
2) исполняемой части программы (основной программы и подпрограмм).
Исполняемая часть объектно-ориентированной программы состоит из последовательности действий, выполняемых над данными типа объект. Каждое такое действие изменяет состояние объекта и представляет собой вызов подпрограммы, доступной объекту.
Объединение декларативных (данных) и исполняемых (процедурных) элементов при описании объекта называется инкапсуляцией.
Объект - это такая структура, компонентами которой являются данные и методы (процедуры и функции) для их обработки. Компоненты - данные -это поля объекта, а компоненты подпрограммы - это методы. По написанию объект напоминает тип-запись. Форма объявления объекта:
TYPE Имя-объекта = OBJECT
Поля-данных;
Заголовки-методов;
END;
При описании объекта сначала определяются все данные объекта, а затем -заголовки методов их обработки - как опережающие описания подпрограмм. Далее - тексты всех методов, написанные так же, как подпрограммы в модулях. Методы всегда используют дальний тип вызова независимо от состояния директивы $F.
Текст подпрограммы метода может быть в одном из программных файлов: в том же, где объявлен объект, или в другом, например в одном из модулей. При написании текста метода в заголовке подпрограммы перед ее именем обязательно надо указать имя типа объекта, которому принадлежит метод, т. е. имя метода должно быть составным в виде: имя-типа-объекта.имя-подпрограммы;.
Конкретная переменная или константа объектного типа называется экземпляром - переменною или константою этого типа. Вызов метода для обработки данных экземпляра состоит из составного имени в виде: имя-экземпляра-объектного-типа . имя-метода;
Пример программы с объявлением объекта и его использованием приведен в листинге 1.
Листинг 1. Объявление и использование экземпляров объектного типа.
Program Ex1;
Type ObName = object { - начало объявления объекта } Fl1 : integer;
Fl2 : real;
Procedure MetName( Param1 : integer; Param2 : real) ;
end; { - конец объявления объекта }
Procedure ObName.MetName;
Begin Fll := Param1;
F12 := Param2;
End; { Объявление и инициализация экземпляра -
типизированной константы объектного типа: }
Const ObCon : ObName = ( Fl1 : 5; Fl2 : 2.5 );
{ Объявление экземпляра - переменной объектного типа :}
Var ObVar : ObName;
Begin
{ Вывод значения объектной константы с помощью составного имени: }
Writeln ('ObCon.Fl1= ', ObCon.Fll);
{ Присоединение к экземпляру объектной константы: }
With ObCon do Writeln ('Fl1 = ',Fl1,'F12 = ',F12:10);
ObVar.MetName ( 7, 3.8 ); { - вызов метода }
{ Вывод значения объектной переменной с помощью составного имени: }
Writeln ( 'ObVar.Fl1 = ', ObVar.Fll);
{ Присоединение к экземпляру объектной переменной: }
With ObVar do Writeln ('Fl1 = ',Fl1,'F12= ',F12:10);
End.
В программе объявлены:
ObName - объектный тип . Он содержит 2 элемента (поля):
Fl1 - типа integer;
Fl2 - типа real.
В состав объекта входит MetName - метод инициализации значений экземпляра объекта данного типа.