Основы Ada 95 - Пакеты |
Страница 8 из 11
Пакеты
Пакет — основное средство для поддержки многократности использования программного текста. При проектировании программ пакеты позволяют применить подход клиент-сервер. Пакет действует как сервер, который предоставляет своим клиентам (программам и другим пакетам) набор услуг. Спецификация пакета объявляет предлагаемые услуги, а тело содержит реализацию этих услуг. Спецификация пакета записывается в виде package <ИмяПакета> is <объявления типов, переменных, констант> <спецификации процедур и функций> end <ИмяПакета>; Пример спецификации: package Рисование is type Точка is array ( 1 .. 2 ) of Integer; -- описание точки в прямоугольной системе координат procedure Переход ( из : in Точка; в : in Точка ); -- переход из одной точки в другую точку procedure Рисовать_Линию (от : in Точка; до : in Точка ); -- рисуется сплошная линия между заданными точками procedure Рисовать_Пунктирную_Линию (от : in Точка: до ; in Точка ); -- рисуется пунктирная линия end Рисование; Данная спецификация предлагает клиентам один тип данных и три процедуры. Тело пакета представляется в виде package body <ИмяПакета> is <объявления локальных переменных, констант. типов> <тела процедур и функций> end <ИмяПакета>; Еще раз отметим, что содержание тела пакета клиентам недоступно. Пример тела: package body Рисование is -- локальные объявления procedure Переход ( из : in Точка: в : in Точка ) is -- локальные объявления begin -- операторы end Переход; procedure Рисовать_Линию(от : in Точка: до ; in Точка) is -- локальные объявления begin -- операторы end Рисовать_Линию; procedure Рисовать_Пунктирную_Линию ( от : in Точка; до : in Точка ) is -- локальные объявления begin -- операторы end Рисовать_Пунктирную_Линию; end Рисование: В спецификации пакета может быть полузакрытая (приватная) часть. Эта часть отделяется от обычной (открытой) части служебным словом private. Содержимое приватной части пользователю (клиенту) недоступно. В эту часть помещают скрываемые от пользователя операции и детали описания типов данных. Заметим, что из тела пакета доступно содержание как открытой, так и приватной части спецификации.
|