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

в теле пакета не требует


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

package body Airplane_Package is

     type Node;

     type Ptr is access Node;

     type Node is

         record

         Info: Airplane_Data;

         Next: Ptr;

         end record;

   Head: Ptr; .                                       -- Начало связанного списка

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

begin

    …                                                        -- Новая реализация

end New_Airplane;

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

begin

   …                                                     -- Новая реализация

end Get_Airplane;

end Airplane_Package;

Инкапсуляция делается не только для удобства, но и для надежности. Пользо­вателям пакета не разрешен непосредственный доступ к данным или внутрен­ним подпрограммам (таким, как Find_Empty_Entry) тела пакета. Таким обра­зом, никакой другой программист из группы не может случайно (или предна­меренно) изменить структуру данных способом, который не был предусмот­рен. Ошибка в реализации пакета обязательно локализована внутри кода тела пакета и не является результатом некоторого кода, написанного членом груп­пы, не ответственным за пакет.

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

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