|
|||||||||||||||||||
|
Объекты, экспортируемые модулямиИмеет смысл задать объекты в модуле с объявлением типа объекта в интерфейсном разделе модуля и телами процедур методов типа объект, заданными в разделе реализации модуля. Примечание: Экспортируемый означает "заданный в интерфейсном разделе модуля". Модули могут иметь собственные определения типа объект внутри раздела реализации, и такие типы подчиняются таким же ограничениям, что и любые типы, заданные в разделе реализации модуля. Тип объект, заданный в интерфейсном разделе модуля, может иметь порожденные типы объекта, заданные в разделе реализации модуля. В случае, когда модуль В использует модуль А, модуль В так же может задавать порожденные типы любого объекта, экспортируемого из модуля А. Типы объектов и методы, описанные выше, можно задать внутри модуля, как показано в 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 программирование: Бурлаков Михаил