Polimorfismo en Programación Orientada a Objetos

Clase 17 de 20Curso Básico de Programación Orientada a Objetos con JavaScript

Resumen

¿Qué es el polimorfismo en la programación orientada a objetos?

El polimorfismo es uno de los pilares fundamentales de la programación orientada a objetos. Este concepto avanzando el principio de herencia al permitir que las subclases puedan modificar o incluso anular el comportamiento de los métodos y atributos que heredan de una superclase. Aunque una subclase herede los métodos y atributos de una clase madre, el polimorfismo permite alterar dicho comportamiento.

¿Cómo funciona el polimorfismo en los ejemplos prácticos?

Para ilustrar cómo el polimorfismo puede ser útil, consideremos un escenario con distintas clases de estudiantes: "gratuitos", "básicos" y "expertos". Todos heredan de una superclase llamada Student. Una función común para todas estas subclases podría ser la de publicar comentarios.

class Student {
  publicarComentario() {
    return "Este comentario fue publicado por un estudiante.";
  }
}

Sin embargo, si creamos un nuevo tipo de estudiante, digamos "estudiantes profesores" o Teacher-Students, estos podrían tener un método de publicación de comentarios que destaque la autoridad del comentario al ser realizado por un profesor.

class TeacherStudent extends Student {
  publicarComentario() {
    return "Esta es la respuesta oficial de la profesora.";
  }
}

Los Teacher-Students podrían compartir los mismos atributos que los demás estudiantes, pero el polimorfismo permite que cambien la implementación del método publicarComentario.

¿Cuántos tipos de polimorfismo existen?

En algunos lenguajes de programación orientados a objetos existen varios tipos de polimorfismo: sobrecarga, paramétrico e inclusión.

¿Qué es el polimorfismo de sobrecarga y paramétrico?

El polimorfismo de sobrecarga y paramétrico permite definir varios métodos con el mismo nombre dentro de una clase, pero variando el tipo y número de parámetros que reciben. Esto es común en lenguajes como Java, donde se puede tener métodos como los siguientes:

public void metodoEjemplo(int numero) {
  // Código para manejar un entero
}

public void metodoEjemplo(String texto) {
  // Código para manejar un texto
}

Así, un mismo método puede actuar de manera diferente según los parámetros que reciba.

¿Cómo se aplica el polimorfismo en JavaScript?

En JavaScript, el polimorfismo que podemos usar es el de inclusión. Esto nos permite sobrescribir métodos o atributos heredados de una superclase:

class MiClaseBase {
  metodo() {
    console.log('Método de la clase base.');
  }
}

class MiSubClase extends MiClaseBase {
  metodo() {
    console.log('Método sobrescrito en la subclase.');
  }
}

En este ejemplo, incluso si llamamos a metodo() desde una instancia de MiSubClase, obtendremos la implementación del método sobrescrito en lugar del original de la clase base.

Consejos prácticos sobre polimorfismo

  • Aprovecha la flexibilidad: El polimorfismo permite añadir nuevos comportamientos sin modificar el código existente.
  • Piensa en extensibilidad: Diseña tus clases para poder ser modificadas en el futuro a través del polimorfismo.
  • Utiliza las herramientas del lenguaje: Dependiendo del lenguaje que utilices, aprovecha los distintos tipos de polimorfismo con las herramientas que cada uno ofrece.

Con estas prácticas, puedes escribir código más limpio, modular y fácil de mantener. Continúa aprendiendo más sobre programación orientada a objetos para sacar el máximo partido del polimorfismo y otros conceptos fundamentales.