TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

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

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

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

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz