Раздел 2.3 - Пакеты

Пакет - основной модуль языка Ada, определяющий набор логически связанных объектов. Например, пакет может быть использован для описания набора типов и операций над ними.

Так, в стандартной библиотеке любого компилятора Ada присутствует пакет Text_IO. Ниже приводится в очень упрощенная версия описаний пакета Text_IO (полное описание приведено в приложении A RM):

package Text_IO is
  type File_Type is limited private;
  type File_Mode is (In_File, Out_File, Append_File);
  procedure Create (File : in out File_Type;
                    Mode : in File_Mode := Out_File;
                    Name : in String := "");
  procedure Close (File : in out File_Type);
  procedure Put_Line (File : in File_Type; Item : in String);
  procedure Put_Line (Item : in String);
end Text_IO;  

Описание пакета Text_IO определяет тип 'File_Type' , который представляет собой открытый или созданный файл. Фраза 'limited private' (ограниченный приватный) означает отсутствие предопределенных операций над данным типом (подробнее об этом - ниже).

В пакете Text_IO также описывается тип 'File_Mode'; переменные данного типа могут принимать одно из трех значений (именно таким образом в Ada описываются перечисляемые типы).

За описаниями типов следует набор подпрограмм, которые принимают параметры типа File_Type. Заметим, что процедуры (подпрограммы) могут находиться внутри пакетов. Процедура 'Create' позволяет создавать файлы с заданным именем, а процедура 'Close' закрывает файл.

Существует две процедуры 'Put_Line', которые выводят текст, однако передаваемые им параметры различаются. Первая принимает в качестве параметров файл и строку, которая должна быть выведена, вторая - только выводимую строку.

Если в описании пакета содержатся описания других объектов, то где-либо должно быть тело пакета, включающее тела этих объектов. Приведенное упрощенное описание для Text_IO содержит объявления процедур, поэтому где-то дальше должно быть тело пакета Text_IO.


Упражнение:

Сколько подпрограмм, явно требующих параметр типа File_Type описано в приведенном упрощенном описании пакета Text_IO?

  1. Одна
  2. Две
  3. Три
  4. Четыре

Вы можете также:

PREVIOUS Перейти к предыдущему разделу

NEXT     Перейти к следующему разделу

OUTLINE  Вернуться к содержанию Урока 2

David A. Wheeler (dwheeler@ida.org)

Перевод: Юрий Королев   Общая редакция перевода: Г.Ю. Сисюк

Исходная копия этого документа находится по адресу "http://www.adahome.com/Tutorials/Lovelace/s2s3.htm".

Исходная копия перевода размещена на сайте http://www.ada-ru.org