Языки программирования. Практический сравнительный анализ


Языки программирования. Практический сравнительный анализ - стр. 252


Все это примеры так называемых первичных или открытых (library) модулей. Название "открытых" отражает факт, что в силу односторонней связи этими модуями  можно пользоваться открыто, в любом месте программы, для чего достаточно употребить соответствующее указание контекста.

Тело пакета управление_сетью и вообще тела подпрограмм и пакетов без внешних связей (кроме связи со "своей" спецификацией) служат примерами так называемых вторичных модулей. Их имена можно трактовать как указание двусторонней связи с соответствующими спецификациями.

[Ведь на тела можно указывать (ссылаться) извне только через спецификации. При этом имя пакета или подпрограммы в заголовке спецификации трактуется как указание на связь с соответствующим телом, а то же имя в заголовке тела трактуется как указание на связь с соответсвующей спецификацией. Так что связь действительно двусторонняя.

Когда же сами спецификации - не отдельные модули, а внутренние компоненты других модулей, то по-прежнему можно оформлять тела пакетов, процедур и задач как вторичные модули, но для этого нужно явно указать соответствующую двустороннюю связь. Именно: в том модуле, где находится спецификация, применяют так называемую заглушку, указывающую на вторичный модуль, а в заголовке вторичного модуля явно указывают имя того модуля, где стоит заглушка. Признаком двусторонней связи служит ключевое слово separate .

Например, можно оформить как вторичный модуль тело любой процедуры из  пакета управление_сетью. Выберем процедуру "вставить" и функцию "перечень_связей". Тогда в теле пакета вместо объявления этих подпрограмм нужно написать заголовки вида

            function перечень_связей (узел: имя_узла)

                           return BOOLEAN is separate;

            procedure вставить (узел: in имя_узла) is separate;

    -- перед нами две ссылки на вторичные модули.

Соответствующие вторичные модули нужно оформить так:

            separate (управление_сетью) -- указано местонахождение заглушки




- Начало -  - Назад -  - Вперед -