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




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


Остались неопределенными только имена макс_узлов и макс_связей. Их неудобно фиксировать в том же модуле - ведь они могут изменяться в зависимости от потребностей пользователя и наличных ресурсов. Поэтому будем считать, что эти имена определены во внешнем для нашего модуля контексте, а именно в пакете с именем "параметры_сети". Доступ к этому контексту из модуля управление_сетью обеспечивается его нулевой строкой.

Это так называемое УКАЗАНИЕ КОНТЕКСТА. После ключевого слова with в нем перечисляются пакеты, объявления из которых считаются имеющими силу в модуле, непосредственно следующем за таким указанием.

Пакет параметры_сети можно определить, скажем, так:

1. package параметры_сети is

2.   макс_узлов : constant INTEGER := 100;

3.   макс_связей: constant INTEGER := 8;

4. end параметры_сети;

Тем самым макс_узлов определено в качестве ПОСТОЯННОЙ целого типа со значением 100, а макс_связей - в качестве постоянной того же типа со значением 8. Значения постоянных нельзя менять при исполнении программы (вот еще один элемент прогнозирования и контроля в Аде).

На этом завершим первоначальное знакомство со спецификацией пакета.

4.6.4. Замечание о принципе цельности (согласования абстракций)

Взглянем на шаги с 2.1 по 2.8 с точки зрения потребности согласовывать абстракции.

Выделив на шаге 2.1 операционную абстракцию - функцию все_связи, мы немедленно ощутили потребность обозначить классы возможных аргументов и результатов этой функции, не занимаясь их детальной проработкой. Если бы приходилось работать на Фортране, Алголе или Бейсике, сделать это оказалось бы невозможным - непосредственно подходящих предопределенных типов данных в этих ЯП нет, а возможность строить новые типы также отсутствует. Скорее всего пришлось бы нарушить естественный порядок детализации и сначала придумать способ представлять "связи" некоторым массивом, а затем учесть, что в этих ЯП функции не вырабатывают результаты-массивы (только скаляры) и представить нужную абстракцию не функцией, а процедурой.


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