Borland Pascal. Руководство пользователя

6cac1dc9

Инкапсуляция


Объединение в объекте кода и данных называется инкапсуляци- ей. Возможно вы сможете предоставить достаточное количество мето- дов, благодаря чему пользователь объекта никогда не будет обра- щаться к полям объекта непосредственно. Некоторые другие объектно -ориентированные языки, например Smalltalk, требуют обязательной инкапсуляции, однако в Borland Pascal у вас есть выбор, а хорошая практика объектно-ориентированного программирования во многом за- висит от вашей добросовестности.

Объекты TEmployee и THourly написаны таким образом, что со- вершенно исключена необходимость прямого обращения к их внутрен- ним полям данных:

type TEmployee = object Name, Title: string[25]; Rate: Real; procedure Init (AName, ATitle: string; ARate: Real); function GetName : String; function GetTitle : String; function GetRate : Real; function GetPayAmount : Real; end;

THourly = object(TEmployee) Time: Integer; procedure Init(AName, ATitle: string; ARate: Real, Atime: Integer); function GetPayAmount : Real; end;

Здесь присутствуют только четыpе поля данных: Name, Title, Rate и Time. Методы ShowName и ShowTitle выводят фамилию pаботаю- щего и его должность, соответственно. Метод GetPayAmount исполь- зует Rate, а в случае pаботающего THourly и Time для вычисления суммы выплат pаботающему. Здесь уже нет необходимости обpащаться непосpедственно к этим полям данных.

Предположив существование экземпляра AnHourly типа THourly, вы могли бы использовать набор методов для манипулирования полями данных AnHourly, например:

with AnHourly do begin Init ('Allison Karlon, Fork lift operator' 12.95, 62); { Выводит на экpан фамилию, должность и сумму выплат} Show; end;

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



Содержание раздела