метод. Реализация метода Report будет очень простой.

procedure TPerson.Report;

begin

      Writeln(mBearing:6, 'Фамилия: '+mFam:20, ' Имя: '+mName);

end;

Процедура распечатывает атрибуты человека. Но откуда она берет их? – эти данные не передаются через параметры, и не хранятся в глобальных переменных. Они объявлены как поля объекта, и этого достаточно, чтобы метод объекта получил доступ к ним.

Инициализация, конструктор

Поля объекта, как любые переменные, нуждаются в инициализации. Как проще осуществить её? Можно присвоить значения полям так, как это делается для записей.

var P : TPerson;       { переменная-объект }

begin

      P.mFam:=’Сидоров’;

      P.mName:= ’Тимофей’;

end.

Но, когда полей много, вы забудете что-то – в этом слабость идеи. Куда надежней учредить особый метод для инициализации полей. Такой метод и назван особо – конструктор. Вместо слова PROCEDURE перед именем конструктора так и пишут: CONSTRUCTOR. Назвать конструктор можно как угодно, но по традиции ему дают имена Init (инициализировать) или Create (создать). Например, для нашего объекта объявить конструктор и реализовать его тело можно так:

type TPerson = object

      {... }

      { заголовок конструктора внутри объекта }

      constructor Init(aBearing: integer; const aName, aFam : string);

      end;

      { реализация конструктора }

constructor TPerson.Init(aBearing: integer; const aName, aFam : string);

begin

      mBearing:= aBearing; mName:= aName; mFam:= aFam;

end;

В этом примере конструктор Init копирует три своих параметра в поля объекта. Теперь переменную-объект P можно инициализировать вызовом конструктора.

var P : TPerson;       { переменная-объект }

begin

      P.Init(1995, 'Мария', 'Рыбкина');

Так ни одно поле объекта не будет пропущено, – за этим присмотрит компилятор!

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

      { P_61_2 Программа с применением объекта типа «человек» (персона) }

type TPerson = object

      mBearing : integer; { год рождения }

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату