Инкапсуляция
Объединение в объекте кода и данных называется инкапсуляци- ей. Возможно вы сможете предоставить достаточное количество мето- дов, благодаря чему пользователь объекта никогда не будет обра- щаться к полям объекта непосредственно. Некоторые другие объектно -ориентированные языки, например 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;
Обратите внимание, что доступ к полям объекта осуществляется не иначе, как только с помощью методов этого объекта.