вторник, 12 июля 2011 г.

Полиморфизм ad nauseum

Это перевод Polymorphism ad nauseum. Автор: Hallvard Vassbotn.

Как и все объектно-ориентированные языки, Delphi (Object Pascal) поддерживает концепцию полиморфизма. Полиморфизм - это греческое слово, буквально означающее "много форм". В применении к программированию это слово означает идею, что вызов концептуальной операции отделён от её реальной реализации. Фактически, в run-time эта реализация может существенно меняться, в зависимости от типа объекта, выполняющего операцию.

Одним из движущих факторов для ООП был графический пользовательский интерфейс (GUI). Архетипический пример полиморфизма из школьного учебника рабски следует шаблону по использованию абстрактного класса TShape как базового класса для потомков TRectangle и TEllipse, которые замещают виртуальный метод Draw. Основная программа рисования перебирает список экземпляров TShape, вызывая виртуальный метод Draw - и каждый вызов будет обрабатываться потомком, рисуя прямоугольник или эллипс (или любую другую фигуру).

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

На уровне языка Delphi:
Использованием грязных хаков:
Я попробую покрыть некоторые из этих способов в будущих постах, так что не переключайте канал!

2 комментария:

  1. Все учебные статьи про полиморфизм за редким исключением НЕ раскрывают, зачем полиморфизм нужен.

    Думаю, любую статью нужно начинать с тезиса: "зачем нужен полиморфизм" или "зачем полиморфизм введен в языки программирования", иначе "утиные" заморочки вообще покажутся бредом....

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.