Другие языки программирования и технологии
Что такое полиморфизм? на примере С++
Вам нужно создать множество различных плоских фигур для графики, которые обладают общим свойством - площадь, но для каждой отдельной фигуры площадь вычисляется по уникальной формуле. В какой-то момент времени вам нужно постепенно масштабировать все фигуры, допустим увеличив их площадь в два-три раза. Для это вам придётся для каждого типа фигур создавать отдельный массив, чтобы потом вызвать в цикле метод масштабирования. Так как количество различных фигур скорее всего будет разным, то вам придётся для каждого массива писать свой цикл. Если фигуры будут снежинками, то их может быть сотня видов. Сто циклов в программе не есть хорошо! И плохо вдвойне, что масштабироваться они будут не в произвольном порядке, а массив за массивом. А хорошо бы было все снежинки поместить в один массив, в произвольном порядке фигур и затем менять их масштаб случайным образом. Полиморфизм позволяет это сделать. Для чего нужно создать базовый класс в котором определить чистую виртуальную функцию для масштабирования снежинок, а также создать множество производных классов для каждой конкретной снежинки, где переопределить эту чистую виртуальную функцию для конкретной геометрии, как виртуальную. Класс, в котором объявлена хотя бы одна чистая виртуальная функция - называется абстрактный и создать объект такого класса не получиться. Зато можно объявить указатель на базовый абстрактный класс и по этому указателю получить доступ к полям и методам производных классов. Это значит, что можно создавать множество объектов классов, производных от абстрактного и в произвольном порядке заносить их в массив указателей базового класса. Затем в единственном цикле можно менять масштаб фигур. Далее, перейдя по ссылке, увидите более простой пример, на котором легко понять технику этого дела: http://pastebin.com/g5h89kAE
Добавлю: полиморфизм может проявлять себя и без классов. Самый простой пример - сабклассинг/суперклассинг окон в виндовс. Это тоже полиморфизм, но немного с другого угла зрения
Похожие вопросы
- Можете объяснить мне в простых терминах ну или с коротким примером Полиморфизм?
- Что такое полиморфизм? Только можно на примере а не теорию?
- Инкапсуляция, полиморфизм Обясните по проще что такое инкапсуляция и полиморфизм?
- Вопрос про полиморфизм в С++.
- Как полиморфизм модефецирует принцип наследования?
- объясните глупой что такое полиморфизм в с++.скока всего прочла и так и не могу понять((((
- ООП: что такое инкапсуляция, абстракция, полиморфизм и наследование?
- Обьясьните пожалуйста кто-нибудь, что такое "Полиморфизм"и "Инкапсуляция"
- что такое полиморфизм?
- Основные принципы ООП: инкапсуляция, полиморфизм, наследование Объясните пожалуйста простыми словами?