|
||||
|
34. Инкапсуляция Объединение в объекте кода и данных называется инкапсуляцией. В принципе, возможно предоставить достаточное количество методов, благодаря которым пользователь объекта никогда не будет обращаться к полям объекта непосредственно. Некоторые другие объектно-ориентированные языки, например 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; Здесь присутствуют только четыре поля данных: Name, Title, Rate и Time. Методы GetName и GetTitle выводят фамилию работающего и его должность соответственно. Метод GetPayAmount использует Rate, а в случае работающего THourly и Time для вычисления суммы выплат работающему. Здесь уже нет необходимости обращаться непосредственно к этим полям данных. Предположив существование экземпляра AnHourly типа THourly, мы могли бы использовать набор методов для манипулирования полями данных AnHourly, например: with AnHourly do begin Init (Aleksandr Petrov, Fork lift operator' 12.95, 62); {Выводит на экран фамилию, должность и сумму выплат} Show; end; Следует обратить внимание, что доступ к полям объекта осуществляется не иначе, как только с помощью методов этого объекта. |
|
||
Главная | Контакты | Нашёл ошибку | Прислать материал | Добавить в избранное |
||||
|