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

UptoLike

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

69
Рис . 4.1.
Таким образом , помимо поддержки абстрактных типов данных, о
которых мы много говорили в части 2, объектное расширение языка Pas-
cal берет на себя часть рутинных операций, связанных с определением
нового типа, и, что самое главное , позволяет создавать обобщенные ал-
горитмы, не отказ ы ваясь от преимуществ строгой типизации. При этом
значительная часть проверок и приведений типа по-прежнему произво-
дится не во время выполнения, а на этапе компиляции, чем достигается
более быстрая работа приложения.
4.5. Вопросы оптимизации
Использованная нами реализация наследования обеспечивает
очень в ы сокую скорость динамического связывания. Для определения
нужной подпрограммы требуется извлечь из памяти всего один указ а-
тель, причем его адрес получается из адреса объекта добавлением сме-
щения, величина которого и з вестна уже на этапе компиляции.
Как это часто бывает, столь быстрый алгоритм приводит к з начи-
тельному перерасходу памяти, вызванному хранением в каждом объекте
Ссылка на объ ект
типа Number
TypeNameIs
Destroy
Plus
Minus
Dot
Slash
Add
Subtract
MultiplyBy
DivideBy
Normalize
Reduce
num
den
Функция TypeNameIs
для типа Rational
0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
Ад рес уем ы й объект
с точки з рения ком пил ят ора
Реал ь ны й ад рес уем ы й объект
в о в рем я в ы пол нения програм м ы
Функция Destroy
для типа Rational
Функция Plus
для типа Rational
     Сс ы л ка на объект
                                    0
        т ипа Number                      TypeNameIs
                                   +1
                                             Destroy




                                                              с точки з рения ком пил ятора
                                   +2
                                                Plus




                                                                  Ад рес уем ы й объект




                                                                                              в ов рем я в ы пол нения програм м ы
                                   +3




                                                                                                Реал ь ны й ад рес уем ы й объект
                                              Minus
                                   +4
   Ф ункция TypeNameIs                          Dot
                                   +5
     д л я т ипа Rational                     Slash
                                   +6
                                                Add
                                   +7
     Ф ункция Destroy                       Subtract
                                   +8
     д л я т ипа Rational                  MultiplyBy
                                   +9
                                            DivideBy
                                 +10
        Ф ункция Plus                       Normalize
                                 +11
     д л я т ипа Rational                    Reduce
                                 +12
                                                num
                                 +13
                                                den
                                 +14


                                        Рис . 4.1.
         Т аким образ ом , пом им опод д ержки абс т ракт ны хт ипов д анны х, о
которы хм ы м ногогов орил и в час т и 2, объект ное рас ш ирение яз ы ка Pas-
cal берет на с ебя час т ь рут инны хопераций, с в яз анны хс опред ел ением
нов огот ипа, и, чтос ам ое гл ав ное, поз в ол яет с оз д ав ат ь обобщенны е ал -
горит м ы , не от каз ы в аяс ь от преим ущес т в с т рогой т ипиз ации. При э том
з начит ел ь ная час т ь пров ерок и прив ед ений т ипа по-прежнем у произ в о-
д ит с я не в ов рем я в ы пол нения, а на э т апе ком пил яции, чем д ос т игает с я
бол ее бы с т рая работ а прил ожения.

                            4.5. В о п ро сы о п тимизац ии

          И с пол ь з ов анная нам и реал из ация нас л ед ов ания обес печив ает
очень в ы с окую с корос т ь д инам ичес кого с в яз ы в ания. Дл я опред ел ения
нужной под програм м ы т ребует с я из в л ечь из пам ят и в с его од ин указ а-
т ел ь , причем егоад рес пол учает с я из ад рес а объект а д обав л ением с м е-
щения, в ел ичина которогоиз в ес т на уже на э т апе ком пил яции.
          Как э точас тобы в ает, с тол ь бы с т ры й ал горит м прив од ит к з начи-
т ел ь ном у перерас ход у пам ят и, в ы з в анном у хранением в кажд ом объект е


                                           69