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

UptoLike

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

34
3. О БЪЕКТНО -ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
3.1. Наследование
Как сложить две матрицы ? Для математика ответ на этот вопрос
очевиден: поэлементно. Программист же, использующий язык со стро-
гой типизацией, вынужден сначала уточнить, какой тип имеют элементы
матриц.
В самом деле, при традиционном подходе неявные (автоматиче-
ские) преобразования типов ограничиваются обычно операциями над
скалярами и некоторыми простейшими приведениями. Поэтому разра-
ботать подпрограмму, принимающую в качестве аргументов матрицы
различной природы, оказывается весьма затруднительно. Как правило,
для каждой пары типов данных приходится создавать отдельную функ-
цию, снова и снова повторяя по с ути один и тот же алгоритм.
Нетрудно видеть, что зависимость количества подпрограмм от
числа используемых типов оказывается для бинарной операции даже не
линейной , а квадратичной . Как следствие, программист (а без примене-
ния перегрузки и пользователь) очень скоро начинает тонуть в этом мно-
гообразии. Кроме того, клиенты вынуждены поддерживать постоянную
обратную связь с разработчиком библиотеки, поскольку они не всегда
могут использовать уже имеющиеся алгоритмы для работы с новыми,
необходимыми им типами данных.
Объектно-ориентированные языки предоставляют в распоряж е -
ние программиста средства, позволяющие достаточно легко разрабаты -
вать обобщенные ал горитмы, применимые (причем без перекомпил я-
ции) к потенциально бесконечному множеству раз личных типов . Раз у-
меется, этот эффект не может быть достигнут без некоторого ослабл е -
ния контроля типов со стороны компилятора, и величина такого ослаб-
ления оказывается очень важной характеристикой языка. Одной из но-
вых форм определения отношений между типами, сочетающей преим у-
щества об оих подходов , является разработка иерархии н а следования .
Наследованием называется механизм, при котором один класс оп-
ределяется на основе другого, уже существующего. Старый класс наз ы -
вают предком или базовым классом, новый потомком или произво д-
ным классо м. При одиночном наследовании каждый класс имеет не бо-
лее одного предка, поэтому совокупность всех классов и отношений
между ними образует древовидную структуру, называемую иерархией
наследования.
     3. О Б ЪЕ К Т Н О -О РИ Е Н Т И РО В А Н Н О Е ПРО Г РА М М И РО В А Н И Е


                                3.1. Н аследование

         Как с л ожит ь д в е м ат рицы ? Дл я м ат ем ат ика от в ет на э т от в опрос
очев ид ен: поэл ем ент но. Програм м ис т же, ис пол ь з ующий яз ы к с о с т ро-
гой т ипиз ацией, в ы нужд ен с начал а уточнит ь , какой т ип им еют эл ем ент ы
м ат риц.
         В с ам ом д ел е, при т рад иционном под ход е неяв ны е (ав том ат иче-
с кие) преобраз ов ания т ипов ограничив ают с я обы чно операциям и над
с кал ярам и и некоторы м и прос т ейш им и прив ед ениям и. Поэ том у раз ра-
бот ат ь под програм м у, приним ающую в качес т в е аргум ентов м ат рицы
раз л ичной природ ы , оказ ы в ает с я в ес ь м а з ат руд нит ел ь но. Как прав ил о,
д л я кажд ой пары т ипов д анны хприход ит с я с оз д ав ат ь отд ел ь ную функ-
цию, с нов а и с нов а пов торяя пос ут и од ин и тот же ал горит м .
         Н ет руд но в ид ет ь , что з ав ис им ос т ь кол ичес т в а под програм м от
чис л а ис пол ь з уем ы хт ипов оказ ы в ает с я д л я бинарной операции д аже не
л инейной, а кв ад рат ичной. Как с л ед с т в ие, програм м ис т (а без прим ене-
ния перегруз ки и пол ь з ов ат ел ь ) очень с короначинает тонут ь в э том м но-
гообраз ии. Кром е того, кл иент ы в ы нужд ены под д ержив ат ь пос тоянную
обрат ную с в яз ь с раз работ чиком библ иот еки, пос кол ь ку они не в с егд а
м огут ис пол ь з ов ат ь уже им еющиес я ал горит м ы д л я работ ы с нов ы м и,
необход им ы м и им т ипам и д анны х.
         Объект но-ориент иров анны е яз ы ки пред ос т ав л яют в рас поряже-
ние програм м ис т а с ред с т в а, поз в ол яющие д ос т аточно л егко раз рабат ы -
в ат ь обобщенны е ал горит м ы , прим еним ы е (причем без переком пил я-
ции) к пот енциал ь но бес конечном у м ножес т в у раз л ичны хт ипов . Раз у-
м еет с я, э тот э ффект не м ожет бы т ь д ос т игнут без некоторого ос л абл е-
ния конт рол я т ипов с ос тороны ком пил ятора, и в ел ичина т акогоос л аб-
л ения оказ ы в ает с я очень в ажной характ ерис т икой яз ы ка. Од ной из но-
в ы хформ опред ел ения от нош ений м ежд у т ипам и, с очет ающей преим у-
щес т в а обоихпод ход ов , яв л яет с я раз работ ка ие ра рхии н а сл едова н ия.
         На сл едова н ием наз ы в ает с я м еханиз м , при котором од ин кл ас с оп-
ред ел яет с я на ос нов е д ругого, уже с ущес т в ующего. Ст ары й кл ас с наз ы -
в ают предком ил и ба зовым кл а ссом, нов ы й — потомком ил и производ-
н ым кл а ссом. При од иночном нас л ед ов ании кажд ы й кл ас с им еет не бо-
л ее од ного пред ка, поэ том у с ов окупнос т ь в с ех кл ас с ов и от нош ений
м ежд у ним и образ ует д рев ов ид ную с т рукт уру, наз ы в аем ую иерархией
нас л ед ов ания.

                                          34