Дисциплины - Объектно-ориентированное программирование

Объектно-ориентированное мышление - Полиморфизм

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

Если механизмы наследования и инкапсуляции обычно схожи во всех объектно-ориентированных языках программирования, то махнизм полиморфизма, это как раз то, чем они отличаются. Например, в Java, если мы создаем два метода с одинаковым именем, то, в зависимости от сигнатуры метода, происходит либо перегрузка, либо переопределение.

При перегрузке методов создается несколько методов с одинаковыми именами, но разными сигнатурами. Т.к. имена у методов одинаковые, то разные варианты метода могут отличаться типом возвращаемого значения или списком аргументов. Фактически имеем разные методы.

В отличии от перегрузки методов, при переопределении создаются методы с одинаковыми сигнатурами и атрибутами. Тогда, в зависимости от того, через какой объект (родительского класса, либо дочернего) мы можем обратиться к разным методам с одинаковыми именами.

А вот в PHP такого понятия, как перегрузка не существует, и не зависимо от сигнатуры и входящих параметров, происходит переопределение метода. Конечно, и в PHP, существуют механизмы имитации перегрузки, например, использование опциональных параметров метода или функции func_num_args().  Однако такие, конструкции имитирующие перегрузку приводят к запутанности кода, и в практике программирования на PHP практически не используются.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
814301 БГУИР
814302 БГУИР
814303 БГУИР
894351 БГУИР
90421 БГУИР


Изображения Видео

1. Абстрактная фабрика https://www.youtube.com/watch?v=1mVONOCxfLg
2. Фабричный метод https://www.youtube.com/watch?v=5UqUDR6_2cY
3. Шаблон декоратор https://www.youtube.com/watch?v=Lwb9bm8yKD0
4. Dessign patterns on PHP https://github.com/domnikl/DesignPatternsPHP
5. Приёмы объектно-ориентированного проектирования. Паттерны проектирования Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес; [пер. с англ.: А. Слинкин науч. ред.: Н. Шалаев]. — Санкт-Петербург [и др.] : Питер, 2014. — 366 с. : ил. ; 24 см.
6. Приемы объектно-ориентированного проектирования. Паттерны проектирования Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес; [пер. с англ.: А. Слинкин науч. ред.: Н. Шалаев]. — Санкт-Петербург [и др.] : Питер, 2014. — 366 с. : ил. ; 24 см.
7. Ajax http://erud.by/ajax
8. Ajax http://erud.by/ajax
9. Ajax http://erud.by/ajax
10. Документация Laravel http://laravel.com
Задание к курсовой работе
Задание к курсовой работе
Вопросы к экзамену