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

Стандартным термином для механизма структурирования


   Стандартным термином для механизма структурирования больших про­грамм является модуль (module), хотя два языка, на которых мы сосредоточили внимание, используют другие термины: пакеты (packages) в языке Ada и клас­сы (classes) в языке C++. В стандарте языка Pascal не определено никакого ме­тода раздельной компиляции или декомпозиции программ. Например, пер­вый Pascal-компилятор был единой программой, содержащей свыше 8000 строк кода на языке Pascal. Вместо того чтобы изменять Pascal, Вирт разрабо­тал новый (хотя и похожий) язык, названный Modula, так как центральным понятием в нем является модуль. К сожалению, многие поставщики расши­рили язык Pascal несовместимыми модульными конструкциями, поэтому Pascal не годится для написания переносимого программного обеспечения. Поскольку модули очень важны для разработки программного обеспечения, мы сосредоточим обсуждение на языке Ada, в котором разработана изящная модульная конструкция — так называемые пакеты.

13.3. Пакеты в языке Ada

 

Основной идеей, лежащей в основе модулей вообще и пакетов Ada в частно­сти, является то, что такие вычислительные ресурсы, как данные и подпро­граммы, должны быть инкапсулированы в некий единый модуль. Доступ к компонентам модуля разрешается только в соответствии с явно специфи­цированным интерфейсом. На рисунке 13.1 показана графическая запись (называемая диаграммой Буча — Бухера), применяемая в разработках на языке Ada.



Большой прямоугольник обозначает пакет Airplane_Package, содер­жащий скрытые вычислительные ресурсы, а малые прямоугольники — ок­на, которые дают пользователю пакета доступ к скрытым ресурсам, овал обозначает, что экспортируется тип; а два прямоугольника — что экспор­тируются подпрограммы. Из каждого модуля, использующего ресурсы па­кета, выходит стрелка, которая указывает на пакет.

Объявление пакета

Пакет состоит из двух частей: спецификации и тела. Тело инкапсулирует вы­числительные ресурсы, а спецификация определяет интерфейс для этих ре­сурсов.

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