Объектно-ориентированное программирование


Объектно-ориентированное программирование - стр. 15


Третья характеристика - это полиморфизм, который в сочетании с поздним связыванием представляет собой весьма продуктивную и сложную идею.

          Термины “ раннее связывание” и  “ позднее”  относятся к этапу, на котором обращение к процедуре связывается с ее адресом. В случае раннего связывания адреса всех функций  и процедур известны  в тот момент, когда происходят компиляция и компоновка программы. Это позволяет приписать каждому обращению к процедуре соответствующий адрес. В большинстве традиционных языков, включая Си  и  Паскаль, используется только раннее связывание. В противоположность этому, в случае позднего связывания адрес процедуры не связывается с обращением к ней до этого момента, пока обращение не произойдет фактически, т.  е.   во время  выполнения программы.

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

 Каким же образом можно улучшить положение с помощью позднего связывания? Рассмотрим случай, когда одно окно частично перекрывает другое. Если “ верхнее ”  окно будет передвинуто или закрыто, то нижнее следует перерисовать для восстановления ранее перекрытой части.




Начало  Назад  Вперед



Книжный магазин