2015-05-11 1 views
-1

Метафора полиморфизму, который упоминается в C++ с нуля (по Шилдт) говорит:Является ли эта метаморфология полиморфизма ошибочной?

Простой пример полиморфизма находится в рулевого колеса автомобиля. Рулевое колесо (то есть интерфейс) является тем же самым, что и тип фактического рулевого механизма. То есть, рулевое колесо работает то же самое, имеет ли ваш автомобиль ручное рулевое управление, усилитель руля или рулевое управление с зубчатой ​​рейкой. Поэтому, как только вы знаете, как управлять рулевым колесом, вы можете управлять любым типом автомобиля.

Я думаю, от некоторых предыдущих показаний, что как раз существование рулевого колеса показывает полиморфизм, не имеющие такую ​​же функциональность . Итак, в какой-то машине поворот колеса влево может привести вас вправо.

Какой из них более точный? Или я смущаю его с помощью Duck?

+0

Это больше философии, чем программирования. Может ли космический челнок по-прежнему называться космическим челноком, если это объект, предназначенный для вас под водой? – pnadczuk

+0

Я бы не сказал, что если он не объяснил свою точку зрения. он говорит: «То есть, рулевое колесо работает так же, есть ли у вашего автомобиля ручное рулевое управление, рулевое управление с усилителем или рулевое управление с реечной шестерней. –

+0

вы могли бы показать пример. * В какой-то машине поворот колеса влево может привести вас вправо. *? – Blip

ответ

0

Когда вы говорите рулевое колесо, ваше описание буквально включает в себя функциональность.

2

Это не рулевое колесо, которое указывает на полиморфизм, именно механизмы рулевого колеса фактически выполняют функцию рулевого управления, которая обозначает полиморфизм. Рулевое колесо вместе с его ожидаемым поведением (по часовой стрелке означает право и т. Д.) Является метафорой для interface.

Рулевое колесо выступает за interface в то время как rack and pinion, power и manual являются эквивалентом некоторые из возможных implementation с.

+0

Хорошо, каждый автомобиль должен иметь: стойку и шестерню, мощность и руководство? «То есть, рулевое колесо работает так же» –

+0

@ Naughty.Coder - ... ** или ** ... - это шаблон стратегии. – OldCurmudgeon

+0

он говорит об основах ООП. –

0

Полиморфизм означает, что много форм. Таким образом, вы цитируете пример полиморфизма о рулевом колесе, рулевое колесо имеет множество форм, как указано в вашей цитате, но использование или выход - то же самое, что может быть фактической реализацией.

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