Непейвода Н.Н. Программирование. Раздел 3

Непейвода Н.Н. Программирование. Страница 359

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

Таким образом, средства работы с очередью оформляются в виде следу­ющего модуля:

Программа 8.6.2

unit IntQueue; interface

const MaxSize = 100;

NotEl = 0; type States = ( Full, Empty, Normal);

Пример реализации очереди демонстрирует стиль модуляризации в TURBO Pascal'e, которой не слишком далеко ушел от стиля, достижимого в стан­дартном языке: появилась возможность не знать, как реализована исполь­зуемая очередь. Тем не менее, модуль IntQueue,с потребительской точки зрения, не очень удобен: вопервых, он не позволяет работать с нескольки­ми очередями, а вовторых, элементами очереди могут быть только целые числа.

Первый недостаток может быть преодолен за счет специального про­граммирования инициализации очереди, вынесения процедуры InitQueueв интерфейсную часть модуля и дополнения его процедурой DoneQueue,уни­чтожающей очередь по окончании работы с нею. Следует позаботиться об идентификации очередей, что в стиле стандарта языка Pascalестественнее всего реализуется через дополнительный параметр каждой из подпрограмм. В реализации процедур InitQueueи DoneQueueцелесообразно предусмот­реть, соответственно, порождение и ликвидацию массива Containerи других представляющих структур данных для каждого экземпляра очереди.Второй недостаток при использовании средств модуляризации, представ­ленных выше, и других возможностей стандартного РаэсаГя преодолеть не удается. В языках с так называемыми абстрактными типами данных (CLU, Alphard и др.), а также в языке Adaможно было бы воспользоваться парамет­рамитипами, заменив тип компонент массива Containerи других структур, принимающих значения хранимых в очереди элементов, именем формаль­ного параметра, вместо которого при вызове модуля подставляются имена конкретных типов. В TURBO Pascal'е вместо этого предусмотрены механиз­мы наследования и полиморфизма, которые являются одним из ключевых моментов объектноориентированного программирования.

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие "Крокодилы"

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама