Четвертый Borland C++ и его окружение



         

Связывание функций - часть 2


действия над ними тоже должны быть предусмотрены в этой программе.

Таким образом, программе приходится отслеживать очень многое, она

усложняется и теряет гибкость. Стоит добавить один новый тип отображаемого объекта или изменить поведения существующего, и придется

скорректировать программу во всех тех местах, где определяется, какие

подпрограммы подлежат вызову.

Каким же образом можно улучшить положение с помощью позднего

связывания? Рассмотрим случай, когда один отображаемый объект, например, - окно, частично перекрывает другое. Если "верхнее" окно будет

передвинуто или закрыто, то нижнее следует перерисовать для восстановления ранее перекрытой части.

Так как меню окно перерисовывается иначе, чем диалоговая панель

или окно, то каждый объект в отображаемой иерархии должен знать, как

перерисовать себя. В библиотеке Turbo Vision этим занимается функция

элемент draw, имеющийся в каждом объекте-потомке класса TView. Следовательно, если требуется перерисовать объект, то программе не нужно

анализировать, к какому типу отображаемого объекта он относится (как

это требовалось бы при раннем связывании). Она просто вызывает функцию элемент данного объекта draw. Функция исполняется и корректно перерисовывает свой объект на экране. Такая множественность действий, которую может выполнять функция элемент с одним и тем же именем, называется полиморфизмом.

Не смотря на то, что программисты, для достижения полиморфизма

предпочитают использовать позднее связывание, но его можно достичь и

ранним связыванием с помощью переопределяемых функций.




Содержание  Назад  Вперед