Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Теперь вернемся к понятию «модуль» и уточним семантику этого понятия.






¨ Как демонстрирует программа InfixToPostfix - инструментарий, предоставляемый модулем UStack, позволяет программировать работу со стеком, не зная способа его реализации. Достаточно знать лишь семантику средств, объявленных в интерфейсной секции модуля (которая описана там, к сожалению, не на языке спецификаций, а просто в комментариях). Однако этого эффекта в определенной мере можно было бы достичь и ограничившись средствами аппарата процедур-функций.

¨ Модуль вводит в употребление новые средства программирования - механизм инкапсуляции. Инкапсуляция (encapsulation) – «скрытие», защита от внешнего воздействия: извне модуля доступны данные и операции, определенные в модуле (локальные???!!!), но только те, которые объявлены в интерфейсной секции (как видимые). Понятие инкапсуляция вносит существенно новое в дилемму локальные - глобальные.

¨ Интерфейсные инструменты - описанные в интерфейсной секции:

· интерфейсный тип данных – TVal (в модуле UVal);

· интерфейсная переменная – ErrStack;

· интерфейсные процедуры и функции – Empty, Push, Pop, Top, WriteAll.

Интерфейсные инструменты используются для организации информационной и операционной связи с модулем.

¨ Инкапсулированные инструменты - описанные в секции реализации:

· инкапсулированные типы данных – TStack;

· инкапсулированные переменные - Stack;

· реализация тел интерфейсных процедур и функций – тоже инкапсулирована.

Инкапсулированные инструменты «скрыты в капсуле», вне модуля на них невозможно ссылаться по их именам. Однако, не являясь глобальными, они не являются и локальными инструментами модуля. Из смысла программы InfixToPostfix ясно, что инкапсулированная в модуле UStack переменная Stack «живет» в течение всего периода выполнения программы InfixToPostfix. Она «непрерывно хранит» элементы стека и положение «его вершины», ее значение изменяется в процессе работы программы со стеком. Манипулировать стеком (переменнной Stack) программа InfixToPostfix может только косвенно с помощью («рук-манипуляторов») Push, Pop.

Кстати, традиционной локальной переменной является i: INTEGER (в процедуре WriteAll). А глобальных для всей многомодульной программы переменных не может быть. Переменные Vh, Vih, x, y можно было бы использовать как глобальные, но только процедурами и функциями в пределах головного модуля InfixToPostfix, вне него они не видны.

¨ Возможно, используя отмеченные выше инкапсулированные инструменты, некоторые действия в программе InfixToPostfix можно было бы реализовать и эффективнее, чем это сделано в примере, однако

§ Инкапсуляция защищает модуль от некорректного внешнего вмешательства в функционирование его инструментов.

  • Оборотная сторона защищённости инструментов модуля - независимость программы решения задачи от способа реализации использованных инструментов.

Можно изменить всё в секции реализации – реализацию процедур и функций и даже представление данных для стека, но в пределах сохраняющих синтаксис и семантику того, что уже объявлено в интерфейсной секции, от этого не пострадает правильность работы программы InfixToPostfix.

Оформление модуля в C/C++.

Для понятия «модуль» в С/С++ нет специальной синтаксической конструкции языка. Но это ни в коей мере не означает, что это понятие не играет важнейшей роли в методологии, методике и практике программирования на С/С++ (*):

  • Многомодульная программа (проект) оформляется в С/С++ как набор программных файлов.
  • В программный файл (модуль) группируются данные и функции по принципу общего их назначения для решения некоторого семейства задач. Программный файл, содержащий функцию main(), является головным модулем многомодульной программы.
  • Для оформления межмодульных связей и защиты инструментов используются средства управления областью видимости и периодом жизни инструментов.





© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.