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


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


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

  Если пакет содержит семь типов окон, то в нем будет семь различных правил перерисовки, но все они будут называться одинаково “ПЕРЕРИСОВКА ”, но для каждого объекта это делается по-своему, так, как это нужно именно для него. Эта множественность форм, которые может принимать правило с одним и тем же именем, называется ПОЛИМОРФИЗМОМ, от греческого POLYMORPHOS - многообразный.

Полиморфизм - исключительно мощный метод обобщения однотипных задач для многих разных объектов. Он повышает степень абстрагирования при создании программного обеспечения, так как программист заботится только о том, как это действие выполнить. Возможен же полиморфизм благодаря позднему связыванию.

 

1.7. Расширяемость кода

 

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




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



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