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

UptoLike

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

16
2. О БЪЕКТНОЕ ПРОГРАММИРО ВАНИЕ
2.1. Классы и объекты
Библиотека, построенная в параграфе 1.1, имеет ряд недостатков .
Во-первых, не всякое значение переменной типа Rational, допус -
тимое с точки зрения компилятора, является таковым и с точки зрения
логики программы. Так, например, если оба поля num и den некоторой
записи r содержат нули (а именно такие значения они получают при ста-
тическом размещении переменной в памяти), то передача r в качестве
первог о параметра любой из открытых подпрограмм библиотеки приво-
дит к бесконечному выполнению цикла в процедуре Reduce и, как след-
ствие, к зависанию программы. Таким образом , программист, испол ь -
зующий библиотеку, постоянно должен следить за тем , чтобы поля всех
используемых им переменных имели допустимые значения.
На это можно возразить, правда, что проверку значений парамет-
ров на корректность следует просто добавить к реализации операций.
Однако в слож ных алгоритмах вызовы подпрограмм происходят гораздо
чаще, чем явное присваивание, поэтому такое решение приведет к сни-
жению скорости их вы полнения.
Вторая проблема менее очевидна, но также весьма существенна.
Интерфейс модуля UnitRational показывает, что к переменным объяв -
ленного в нем типа применимы операции слож ения, вычитания, умно-
жения и деления. Вместе с тем нет никакого способа формального оп-
ределения того, что та или иная операция, например, взятие остатка от
деления, к ним неприменима . Пользователь библиотеки вообще не обя -
зан строить свои программы лишь на предоставленных в его распор я -
жение процедурах и функциях, вместо этого он может фактически на-
равне в разработчиком создавать собственные подпрограммы, опери-
рующие данным типом .
В действительности, отмеченные неприятности являются час т-
ными случаями более общей проблемы: открытости внутренней струк-
туры типа Rational. В предыдущей части мы уже говорили о том , что
сокрытие реализ ации библиотеки создает возможность ее изменения без
соответствующей модификации кода клиентов . Точно так же сокрытие
реализации типа данных дает програм мис ту-раз работ чи ку полную сво-
боду в выборе конкретного представления этого типа и возможность
контроля целостности его объектов .
                   2. О Б ЪЕ К Т Н О Е ПРО Г РА М М И РО В А Н И Е


                             2.1. К лассы и о б ъекты

          Б ибл иот ека, пос т роенная в параграфе 1.1, им еет ряд нед ос т ат ков .
          Во-перв ы х, не в с якое з начение перем енной т ипа Rational, д опус -
т им ое с точки з рения ком пил ятора, яв л яет с я т аков ы м и с точки з рения
л огики програм м ы . Т ак, наприм ер, ес л и оба пол я num и den некоторой
з апис и r с од ержат нул и (а им еннот акие з начения они пол учают при с т а-
т ичес ком раз м ещении перем енной в пам ят и), то перед ача r в качес т в е
перв огопарам ет ра л юбой из от кры т ы хпод програм м библ иот еки прив о-
д ит к бес конечном у в ы пол нению цикл а в процед уре Reduce и, как с л ед -
с т в ие, к з ав ис анию програм м ы . Т аким образ ом , програм м ис т, ис пол ь -
з ующий библ иот еку, пос тояннод ол жен с л ед ит ь з а т ем , чтобы пол я в с ех
ис пол ь з уем ы хим перем енны хим ел и д опус т им ы е з начения.
          Н а э том ожнов оз раз ит ь , прав д а, чтопров ерку з начений парам ет -
ров на коррект нос т ь с л ед ует прос то д обав ит ь к реал из ации операций.
Од наков с л ожны хал горит м ахв ы з ов ы под програм м проис ход ят гораз д о
чаще, чем яв ное прис в аив ание, поэ том у т акое реш ение прив ед ет к с ни-
жению с корос т и ихв ы пол нения.
          Вторая пробл ем а м енее очев ид на, нот акже в ес ь м а с ущес т в енна.
И нт ерфейс м од ул я UnitRational показ ы в ает, что к перем енны м объяв -
л енного в нем т ипа прим еним ы операции с л ожения, в ы чит ания, ум но-
жения и д ел ения. Вм ес т е с т ем нет никакогос пос оба форм ал ь ногооп-
ред ел ения того, чтот а ил и иная операция, наприм ер, в з ят ие ос т ат ка от
д ел ения, к ним н е приме н има . Пол ь з ов ат ел ь библ иот еки в ообще не обя-
з ан с т роит ь с в ои програм м ы л иш ь на пред ос т ав л енны хв его рас поря-
жение процед урахи функциях, в м ес то э того он м ожет факт ичес ки на-
рав не в раз работ чиком с оз д ав ат ь с обс т в енны е под програм м ы , опери-
рующие д анны м т ипом .
          В д ейс т в ит ел ь нос т и, от м еченны е неприят нос т и яв л яют с я час т -
ны м и с л учаям и бол ее общей пробл ем ы : от кры тос т и в нут ренней с т рук-
т уры т ипа Rational. В пред ы д ущей час т и м ы уже гов орил и о том , что
с окры т ие реал из ации библ иот еки с оз д ает в оз м ожнос т ь ее из м енения без
с оот в ет с т в ующей м од ификации код а кл иентов . Т очно т ак же с окры т ие
реал из ации т ипа д анны хд ает програм м ис т у-раз работ чику пол ную с в о-
бод у в в ы боре конкрет ного пред с т ав л ения э того т ипа и в оз м ожнос т ь
конт рол я цел ос т нос т и егообъектов .


                                          16