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

UptoLike

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

78
для объектов одного и того же типа.
Возможной альтернативой является полный отказ от контроля ти-
пов во время разработки, реализованный, например, в языке Smalltalk и
некоторых системах символьной математики. У такого подхода есть два
очевидных минуса: существенное снижение скорости работы прилож е -
ния за счет проверки типа перед выполнением каждой операции и отл о-
женное обнаружение ошибок несоответствия.
Описанное в настоящем пособии определение совместимости на
основе иерархии наследования позволяет произвести часть проверок ти-
пов лишь во время компиляции. Кроме того, следствием обязательного
включения в класс-потомок всех членов клас са-пред ка являются весьма
эффективные алгоритмы динамического связывания, приведенные в час -
ти 4. Вместе с тем данная схема наследования не лишена и некот орых
недостатков .
Во-первых, производные классы должны , как правило, достаточ-
но сил ь но отличаться от базовых по уровню абстракции. Рассмотрим ,
например, множества комплексных, действительных, рациональных и
целых чисел с соот вет ствую щими арифметическими операциями. Выра-
зить имею щиеся включения на формальном языке мы можем , лишь сде-
лав каждую следую щую структуру наследником предыдущей. При этом ,
однако, для представления целог о числа нам придется использовать как
минимум пару вещественных и пару целочис ленных полей, доставших-
ся от классов комплексных и рациональных чисел . Исключить лишние
поля можно, только унаследовав все классы от одного предка (подобн о-
го рассмотренному в третьей части классу Number) и потеряв , тем с а -
мым, взаимосвязи между ними.
Вторая неприятность вызвана тем , что отношения сущностей
предметной области далеко не всегда могут быть выражены с помощью
ориентированного дерева. Предположим , что у нас имеются классы для
представления абстракт ного поля и линейно упорядоченного множества.
Тогда класс рациональных чисел , очевидно, должен быть наследником
их обоих, что возможно лишь при использовании той или иной формы
множественного наследования. Одна из воз никающих на этом пути про-
блем конфликт имен: базовые классы могут содержать члены с од и -
наковыми идентификаторами.
Здесь интересно отметить, что зависимости между модулями с
некоторой натяжкой также можно рассматривать как форму множествен-
ного наследования. Подробное описание проблемы перекрывающихся
объявлений в данном конкретном случае содержит § 1.3.
д л я объектов од ногои тогоже т ипа.
         Воз м ожной ал ьт ернат ив ой яв л яет с я пол ны й от каз от конт рол я т и-
пов в ов рем я раз работ ки, реал из ов анны й, наприм ер, в яз ы ке Smalltalk и
некоторы хс ис т ем ахс им в ол ь ной м ат ем ат ики. У т акогопод ход а ес т ь д в а
очев ид ны хм инус а: с ущес т в енное с нижение с корос т и работ ы прил оже-
ния з а с чет пров ерки т ипа перед в ы пол нением кажд ой операции и отл о-
женное обнаружение ош ибок нес оот в ет с т в ия.
         Опис анное в нас тоящем пос обии опред ел ение с ов м ес т им ос т и на
ос нов е иерархии нас л ед ов ания поз в ол яет произ в ес т и час т ь пров ерок т и-
пов л иш ь в о в рем я ком пил яции. Кром е того, с л ед с т в ием обяз ат ел ь ного
в кл ючения в кл ас с -потом ок в с ехчл енов кл ас с а-пред ка яв л яют с я в ес ь м а
э ффект ив ны е ал горит м ы д инам ичес когос в яз ы в ания, прив ед енны е в час -
т и 4. Вм ес т е с т ем д анная с хем а нас л ед ов ания не л иш ена и некоторы х
нед ос т ат ков .
         Во-перв ы х, произ в од ны е кл ас с ы д ол жны , как прав ил о, д ос т аточ-
но с ил ь но отл ичат ь с я от баз ов ы хпо уров ню абс т ракции. Рас с м от рим ,
наприм ер, м ножес т в а ком пл екс ны х, д ейс т в ит ел ь ны х, рационал ь ны х и
цел ы хчис ел с с оот в ет с т в ующим и арифм ет ичес ким и операциям и. Вы ра-
з ит ь им еющиес я в кл ючения на форм ал ь ном яз ы ке м ы м ожем , л иш ь с д е-
л ав кажд ую с л ед ующую с т рукт уру нас л ед ником пред ы д ущей. При э том ,
од нако, д л я пред с т ав л ения цел огочис л а нам прид ет с я ис пол ь з ов ат ь как
м иним ум пару в ещес т в енны хи пару цел очис л енны хпол ей, д ос т ав ш их-
с я от кл ас с ов ком пл екс ны хи рационал ь ны хчис ел . И с кл ючит ь л иш ние
пол я м ожно, тол ь коунас л ед ов ав в с е кл ас с ы от од ногопред ка (под обно-
го рас с м от ренном у в т рет ь ей час т и кл ас с у Number) и пот еряв , т ем с а-
м ы м , в з аим ос в яз и м ежд у ним и.
         Вторая неприят нос т ь в ы з в ана т ем , что от нош ения с ущнос т ей
пред м ет ной обл ас т и д ал еконе в с егд а м огут бы т ь в ы ражены с пом ощь ю
ориент иров анногод ерев а. Пред пол ожим , чтоу нас им еют с я кл ас с ы д л я
пред с т ав л ения абс т ракт ногопол я и л инейноупоряд оченногом ножес т в а.
Тогд а кл ас с рационал ь ны хчис ел , очев ид но, д ол жен бы т ь нас л ед ником
ихобоих, чтов оз м ожно л иш ь при ис пол ь з ов ании той ил и иной форм ы
м ножес т в енногонас л ед ов ания. Од на из в оз никающихна э том пут и про-
бл ем — конфл икт им ен: баз ов ы е кл ас с ы м огут с од ержат ь чл ены с од и-
наков ы м и ид ент ификаторам и.
            Зд ес ь инт ерес но от м ет ит ь , что з ав ис им ос т и м ежд у м од ул ям и с
   некоторой натяжкой т акже м ожнорас с м ат рив ат ь как форм у м ножес т в ен-
   ного нас л ед ов ания. Под робное опис ание пробл ем ы перекры в ающихс я
   объяв л ений в д анном конкрет ном с л учае с од ержит § 1.3.


                                             78