Языки программирования - концепции и принципы

Несколько компилируемых модулей могут находиться


Несколько компилируемых модулей могут находиться в од­ном файле, хотя обычно удобнее хранить каждый модуль в отдельном файле.

   Соглашение для написания программ на языке С, предложенное в преды­дущем разделе, пытается имитировать инкапсуляцию, которая предостав­ляется пакетами в языке Ada. Включаемые файлы, содержащие внешние объявления, соответствуют спецификациям пакета и с помощью записи static для всех глобальных переменных и подпрограмм в файле достигается эффект тела пакета. Конечно, это всего лишь «бюрократический» прием, и его легко обой-ти, но это хороший способ структурирования программ в языке С.

 

 

 

 

 

 

 

 

 

 

Использование пакета

Программа на языке Ada (или другой пакет) может получить доступ к вычис- лительным ресурсам пакета, задав контекст (context clause) перед первой стро­кой программы:

with Airplane_Package;

procedure Air_Traffic_Control is

       A: Airplane_Package.Airplane_Data;

        Index: Integer;

begin

    while... loop

         A :=...;                                        -- Создать запись

         Airplane_Package. New_Airplane(A, Index):

                                                             -- Сохранить в структуре данных

      end loop;

end Air_Traffic_Control;

With-конструкция сообщает компилятору, что эта программа должна компи­лироваться в среде, которая включает все объявления пакета Airplain_Package. Синтаксис для именования компонентов пакета аналогичен синтаксису для выбора компонентов записи. Поскольку каждый пакет должен иметь уни­кальное имя, компоненты в разных пакетах могут иметь одинаковые имена, и никакого конфликта не возникнет. Это означает, что управление пространст­вом имен, т. е. набором имен, в программном проекте упрощено, и необходи­мо осуществлять контроль только на уровне имен пакетов. Сравните это с языком С, где идентификатор, который экспортируется из файла, видим во всех других файлах, потому недостаточно только обеспечить различие имен файлов.


Содержание  Назад  Вперед