Ответы на экзаменационные вопросы № 1-34 по дисциплине "Программирование" (Средства модульного программирования в системе Турбо-Паскаль. ООП. Объекты в динамической памяти), страница 23

Рассм. возм. ООП на конкр. рпимере. Предполож., необход. созд. прогр. для расч. заработ. платы сотрудн. инстит.

Для нач нам понад. некий структ-ый тип, назовем его Tperson, поля кот. предназнач. для хран. инф. о фамилии сотрудн.(name) и велич. его зароб. платы(money).В соотв. с пра. ООП запиш.

Type tperson = object

Name:string[6];

Money:real;

End;

В дальн. этот тип мож. быть использов. как обычно. В программе должн. быть опис. перемен. этого типа(татическ. или динамич.). Напрмер:

Var person: Tperson;

или в случ. динам. перемен.

Type Dinperson = ^Tperson;

Var dperson:Dinperson;

К полю объекта можно обрат. как к полю обычн. записи, с пом. точечн. нотац.

Person.name:=’Иванов’;

или с пом. операт. WITH

With person do

Begin

Name:=’Иванов’;

Money:=300;

End;

Однако согл. прав. ООП, дост. к полям объекта осущ. с пом. методов этого объекта, заголовки кот. описан. внутри объктн. типа.

Так для зад. нач. знач. полей экземпл. объекта нам понадоб. проц. Init. В обычн.Turbo Паскале эта проц. выгл. бы след. образ.

Procedure Init(var person: Tperson;nm:string;m:real);

Begin

With person do

Begin

Name:=nm;

Money:=m;

end;

end;

В этой проц указ. какой именно тип записи она обрабат.

Иначе в ООП. Как уже говор., проц. и ф.(методы), обрабат-ие поля поля данного объекта, как бы связ. воедино, поэтому в опис. методов. нет необод. в дополн. уточн.

Тин Tperson включ. кроме полей еще и метод Init, кот. задает полям нач. знач.:

Typr Tperson = object

Name:string[6];

Money:real;

Procedure Init(nm:string;m:real);

End;

При обращ. к полю метод. перед. невидим. пар-р Self, кот. как бы замен. индетиф. экземпл. объекта. В действ. этот пар – р явл-ся 32 разрядн. указт. на экземпл. объекта, кот вызыв. метод, и как бы еще одним, но невидим. полем объекта. опред. типов. описан. полей обяз. предшеств. заголовкам метод. За опис. типа(не обяз. сразу после него) след. полн. описан его метод., причем полн. имя подпрогр. – метода сост. из имени объектн. типа, отдел. от имени метода точкой.Вынес. полн. опис. метод за пред. опис. типа связ. в прот. сл. типы бы стали плохо обозримы.

Для объекта Tperson полн. опис. метода Init, зад –его знач. полей, выгяд. след. образ.

Tperson.Init(nm:string;m:real);

Begin

Name:=nm;

Money:=m;

end;

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

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

Если необх. заполн. поля экземпл. объекта, то в теле прогр. выз-ся соответств. метод.

Var person:tperson;

Begin

Person.Init(‘Иванов’,300);

..............................................

end.

Как видно из привед. примера, при обоащ. к методу имя объктн. типа замен. на имя перемен., кот. выз-т данный метод, и отпадает необх. в использ. Var – пар-ра.

Огран. на имена использ. в объектн. типах:

Индетиф. форм.пар-в проц. и ф. не должны совпад. с индет. лок. пар-в, имена форм. пар- в метод. не должны совпад. с именами полей объекта.

Таким образ. принц. инкапсул. требует, чтобы данные объекта обрабатыв. его метод., и поддержив. опережющ. использов. заголовк. методов в сост. описан. объекта. Сами же методы вынесен. за описан. типа и треб. указ. объектн. типа перед именем метода в загол. посден.

28.ООП. Описание объектов в модулях. Поддержка инкапсуляции. Директивы private и public.

Выше уже было отмеч. внешн. сх – во объект. и модул. Это сх – во вытек. из того, что и те и др. были введен. для ушлучш. технол. подгот. програм.Смейство  объектн. типов – способ упорядоч. данных и подпрогр., а мод. – некая форма библ. подпрогр.Стр-ра объект. хорошо соотв. использ. в мод – ле, при этом в интерф. части мод. опис. тип объекта, а тела мет. объекта опис. в исполн. части. Типы объектов, опред. в интерф. части мод., могут иметь потомков, определ. в исполн. части.Если мод. В использ. мод. А, мод В также мож определ. потомк. люб. типа объекта из мод. А. Не гов. уже о том, что прогр., использ. мод., таке мож. определ. своих типов – потомк. объекта, определ. в мод.