Мир программирования

 


Найти: на:


Меню
Партнеры
Счетчики
Реклама

Объекты, экспортируемые модулями


 Предыдущая страница     |     Следующая страница  
Добавить в избанное Обсудить в форуме Написать автору сайта

     Имеет смысл задать объекты в модуле с объявлением типа объекта в  интерфейсном  разделе  модуля  и  телами  процедур  методов типа объект,  заданными в  разделе  реализации  модуля.  

     Примечание: Экспортируемый означает "заданный  в  интерфейсном разделе модуля".

     Модули могут  иметь собственные определения типа объект внутри раздела реализации, и такие типы подчиняются таким же ограничениям, что и любые типы, заданные в разделе реализации модуля. Тип объект, заданный в интерфейсном разделе модуля,   может  иметь  порожденные типы объекта, заданные в разделе реализации модуля. В случае, когда модуль В использует модуль А,   модуль  В  так  же  может  задавать порожденные типы любого объекта, экспортируемого из модуля А.

     Типы объектов и методы,  описанные выше,  можно задать  внутри модуля, как   показано   в   POINTS.PAS   на   Вашем  диске.  Чтобы использовать типы объектов и методы,  определенные в модуле Points, можно  просто использовать этот модуль в своей программе и объявить экземпляр типа Point в var разделе своей программы:

      program MakePoints;

      uses Graph, Points;

      var

        APoint : Point;

        ...

      Для того,   чтобы  создать  и  показать точку,  представленную переменной APoint,  нужно просто вызвать методы APoint,   используя синтаксис с точкой:

      APoint.Init(151, 82); {исходные значения X, Y 151 и 52}

     APoint.Show;          {APoint включается}

     APoint.MoveTo(163, 101); {APoint перемещается в 163, 101}

     APoint.Hide;          {APoint выключается}

      Примечание: Объекты    так   же   могут   быть   типированными константами.

     Объекты имеют много общего  с  записями  и  их  так  же  можно использовать   внутри  with  операторов.  В  этом  случае  название объекта, которому принадлежит метод, необязательно:

      with APoint do

     begin

        Init(151, 82); {исходные значения X, Y 151 и 52}

        Show;          {APoint включается}

        MoveTo(163, 101); {APoint перемещается в 163, 101}

        Hide;          {APoint выключается}

     end;

      Как и записи,  объекты  могут  передаваться  в  процедуры  как параметры и (как Вы увидите позднее) могут размещаться в "куче".

 [начало] [оглавление]

 

Раздел private.

      В ряде случаев у Вас  могут  быть  части  объявления  объекта, которые Вы   не   хотите   экспортировать.   Например,   Вам  может понадобиться предоставить   объекты   для   использования   другими программистами, не   позволяя  им  манипулировать  данными  объекта напрямую. Чтобы позволить это,  Turbo  Pascal  разрешает  указывать личные (private) поля и методы внутри объекта.

     Личные поля и методы доступны только внутри модуля,  в котором объявлен объект.  В предыдущем примере,  если,  например, тип Point имел личные поля,  к ним можно  обратиться  только  изнутри  модуля Points. Даже,  хотя  другие  части  Point  будут  экспортироваться, части, объявленные как личные, будут недоступны.

     Личные поля  и  методы объявляются сразу после обычных полей и методов, следуя  за  зарезервированным   словом   private.   Полный синтаксис объявления объекта:

          type

           НовыйОбъект = object(предок)

             поля;

             методы;

           private

             поля;

             методы;

           end;

[начало] [оглавление]


Предыдущая страница     |     Следующая страница


Добавить в избанное Обсудить в форуме Написать автору сайта

Опрос

Конкурсы
Реклама

 

Web дизайн: Бурлаков Михаил    

Web программирование: Бурлаков Михаил

Используются технологии uCoz