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