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

Пакет из следующего примера предназначается


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

package Airplane_Package is

         type Airplane_Data is

              record

                   ID:String(1 ..80);

                   Speed: Integer range 0.. 1000;

                   Altitude: Integer range 0..100;

              end record;

           procedure New_Airplane(Data: in Airplane_Data; I: out Integer);

           procedure Get_Airplane(l: in Integer; Data: out Airplane_Data);        

end Airplane_Package;

Спецификация пакета содержит не тела, а только объявления процедур, заканчивающиеся точкой с запятой и вводимые зарезервированным словом is. Объявление служит только в качестве спецификации вычислительного ре­сурса, который предоставляет пакет.

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



package body Airplane_Package is

    Airplanes: array(1..1000) of Airplane_Data;

    Current_Airplanes: Integer range O..Airplanes'Last;

    function Find_Empty_Entry return Integer is

    begin

    …

    end Find_Empty_Entry;

      procedure New_Airplane(Data: in Airplane_Data; I: out Integer) is

             Index: Integer := Find_Empty_Entry;

      begin

         Airplanes(lndex) := Data;

          I := Index;

       end New_Airplane;

        procedure Get_Airplane(l: in Integer; Data: out Airplane_Data) is

        begin

              Data := Airplanes(l);

        end Get_Airplane;

end Airplane_Package;

Чего мы добились? Структура, применяемая для хранения данных о самоле­тах (здесь это массив фиксированного размера), инкапсулирована в тело па­кета.

Содержание раздела