Введение в объектно-ориентированное программирование на языке Object Pascal. Соколов Е.В. - 13 стр.

UptoLike

Составители: 

13
Add: -1/6
Sub: 7/6
Mul: 1/18
Div: 9/2
Здесь строки 3 и 7 демонстрируют, в частности, корректную работу про-
цедуры Reduce, а 4 и 8 также и процедуры Normalize. Обе они явл я-
ются закрытыми, поэтому непосредственное употребление в тестовой
программе выражений типа Normalize(r2); Reduce(r2); приведет к ошибке
на этапе компиляции.
В действительности, разделение членов модулей на открытые и
закрытые является одним из основных преимуществ использования по-
следних. Оно позволяет скрыть от клиента часть реализации алгоритма,
которую впоследствии можно будет модифицировать, не внося никаких
изменений в исходный код данного клиента. Более того, если библиот е -
ка является динамически з агружаемой , то ее клиенты не придется даже
перекомпилировать.
1.3. Особенности подключения модулей
В этом параграфе нам будет удобно считать основную программу
модулем , в котором нет раздела интерфейса, а роль разделов инициал и-
зации и финализации играет главный блок begin ¼ end.
Операторы uses определяют отношения зависимости между мо-
дулями, которые очевидным образом могут быть представлены в виде
ориентированного графа зависимостей. Если существует путь, связ ы -
вающий в этом графе вершину, соответствующую модулю A, с верш иной ,
соответствующей модулю B, то говорят , что модуль A косвенно использу-
ет модуль B. Поскольку граф зависимостей может иметь практ ически
любой вид , возможность косвенного использования порождает некото-
рые проблемы, которые необходимо учитывать при разработке мод у лей.
Прежде всего заметим , что модуль может косвенно использовать
сам себя. Такая ситуация соответствует цикл у на графе и называется ци к -
лич е ской ссылкой модулей. Компилятор запрещает циклическую ссылку,
если все соответствующие ей операторы uses расположены в интер-
фейсных частях модулей. Тем самым исключается возможность появл е-
ния самоссылающихся объ яв л е ний типов данных.
Отсюда вытекает следующее правило: подключение модуля в раз -
деле интерфейса выполняется лишь тогда, когда его переменные, кон -
станты или типы используются в объявлениях данного раздела. Во всех
Add:   -1/6
Sub:   7/6
Mul:   1/18
Div:   9/2


Зд ес ь с т роки 3 и 7 д ем онс т рируют, в час т нос т и, коррект ную работ у про-
цед уры Reduce, а 4 и 8 — т акже и процед уры Normalize. Обе они яв л я-
ют с я з акры т ы м и, поэ том у непос ред с т в енное упот ребл ение в т ес тов ой
програм м е в ы ражений т ипа Normalize(r2); Reduce(r2); прив ед ет к ош ибке
на э т апе ком пил яции.
         В д ейс т в ит ел ь нос т и, раз д ел ение чл енов м од ул ей на от кры т ы е и
з акры т ы е яв л яет с я од ним из ос нов ны хпреим ущес т в ис пол ь з ов ания по-
с л ед них. Онопоз в ол яет с кры т ь от кл иент а час т ь реал из ации ал горит м а,
которую в пос л ед с т в ии м ожнобуд ет м од ифициров ат ь , не в нос я никаких
из м енений в ис ход ны й код д анногокл иент а. Б ол ее того, ес л и библ иот е-
ка яв л яет с я д инам ичес ки з агружаем ой, тоее кл иент ы не прид ет с я д аже
переком пил иров ат ь .

                  1.3. О со б енно сти п одклю чениямодулей

         В э том параграфе нам буд ет уд обнос чит ат ь ос нов ную програм м у
м од ул ем , в котором нет раз д ел а инт ерфейс а, а рол ь раз д ел ов инициал и-
з ации и финал из ации играет гл ав ны й бл ок begin ¼ end.
         Операторы uses опред ел яют от нош ения з ав ис им ос т и м ежд у м о-
д ул ям и, которы е очев ид ны м образ ом м огут бы т ь пред с т ав л ены в в ид е
ориент иров анного г        ра фа за висимосте й. Е с л и с ущес т вует пут ь , с в яз ы -
в ающий в э том графе в ерш ину, с оот в ет с т в ующую м од ул ю A, с в ерш иной,
с оотв ет с т в ующей м од ул ю B, тогов орят, чтом од ул ь A косве н н о испол ьзу-
е т м од ул ь B. Пос кол ь ку граф з ав ис им ос т ей м ожет им ет ь практ ичес ки
л юбой в ид , в оз м ожнос т ь кос в енного ис пол ь з ов ания порожд ает некото-
ры е пробл ем ы , которы е необход им оучит ы в ать при раз работ ке м од ул ей.
         Прежд е в с его з ам ет им , что м од ул ь м ожет кос в енно ис пол ь з ов ат ь
с ам с ебя. Т акая с итуация с оот в ет с т в ует цикл у на графе и наз ы в ает с я цик-
л иче ской ссыл кой м од ул ей. Ком пил ятор з апрещает цикл ичес кую с с ы л ку,
ес л и в с е с оотв ет с т в ующие ей операторы uses рас пол ожены в инт ер-
фейс ны хчас тяхм од ул ей. Т ем с ам ы м ис кл ючает с я в оз м ожнос т ь появ л е-
ния с ам ос с ы л ающихсяобъяв л ений т ипов д анны х.
         От с юд а в ы т екает с л ед ующее прав ил о: под кл ючение м од ул я в раз -
д ел е инт ерфейс а в ы пол няет с я л иш ь тогд а, когд а его перем енны е, кон-
с т ант ы ил и т ипы ис пол ь з уют с я в объяв л енияхд анногораз д ел а. Вов с ех


                                           13