Comprende cómo el polimorfismo en programación orientada a objetos te permite usar la misma función con distintos objetos y obtener respuestas correctas en cada caso. Con una analogía de control universal y una demostración simple en JavaScript, verás por qué el método hablar es suficiente para que todo funcione gracias al duck typing.
¿Qué es el polimorfismo y por qué importa en programación orientada a objetos?
El polimorfismo significa “muchas formas” y describe la capacidad de distintos objetos de responder al mismo mensaje según su tipo. La analogía del control universal lo ilustra: al presionar encender, un televisor, un sistema de audio o un proyector actúan de forma distinta, pero cumplen su tarea.
Un mismo mensaje: encender o hablar.
Distintos tipos de objeto: televisor, audio, proyector; persona, perro, robot.
Resultado correcto en cada contexto.
¿Cómo ayuda la analogía del control universal?
Mismo botón, comportamientos diferentes según el dispositivo.
Mantiene una interfaz común: “encender”.
Refuerza la idea clave del polimorfismo: una interfaz, múltiples implementaciones.
¿Cómo aplica en JavaScript con duck typing?
En JavaScript, el polimorfismo se vive con duck typing: “si camina como pato y hace cuac como pato, trátalo como pato”. Importa lo que el objeto puede hacer, no su tipo o clase. Aquí, basta con que el objeto tenga hablar.
JavaScript no verifica tipos ni clases, solo que exista el método llamado.
Si el objeto tiene hablar, funciona. Si no, aparece un error en ejecución.
La misma función se comporta distinto según el objeto que recibe.
¿Qué es duck typing en JavaScript?
Evalúa capacidades: “¿tiene el método hablar?”.
No requiere herencia ni clases compartidas.
Favorece funciones genéricas que aceptan varios objetos.
¿Cómo se implementa con una función que recibe objetos?
// Tres objetos distintos, misma interfaz: hablarconst persona ={hablar(){console.log("Hola, soy una persona");}};const perro ={hablar(){console.log("Ladrido");}};const robot ={hablar(){console.log("Sonido icónico de robot");}};// Una función que usa el método hablar del objeto recibidofunctionhacerHablar(algo){ algo.hablar();}// La misma función, distintos objetos, respuestas correctashacerHablar(persona);// Hola, soy una personahacerHablar(perro);// LadridohacerHablar(robot);// Sonido icónico de robot
Interfaz común: hablar.
Llamada uniforme: hacerHablar(objeto).
Resultados correctos: cada objeto responde según su comportamiento.
¿Qué ocurre si el objeto no tiene el método?
La llamada a hablar no existe y produce un error en tiempo de ejecución.
Señal clara de que el objeto no cumple con la interfaz esperada.
Recomendación práctica: asegura que el objeto provea hablar antes de llamarlo.
¿Qué habilidades y prácticas te llevas?
La demostración en el navegador refuerza habilidades clave que aplican en proyectos reales.
Entender y explicar polimorfismo con una analogía clara.
Aplicar duck typing para diseñar funciones genéricas y reutilizables.
Crear objetos independientes que comparten una interfaz mínima.
Invocar métodos comunes sin depender de clases o herencias.
Probar en el navegador y leer el output esperado.
Identificar y manejar errores cuando falta el método requerido.
¿Quieres ponerlo en práctica? Acepta los retos propuestos y comparte tus soluciones en los comentarios. En la siguiente sesión, se aplicará el polimorfismo al proyecto de hábitos: cuéntanos cómo lo implementarías tú.