Herencia en Programación Orientada a Objetos: Tipos de Estudiantes

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

Resumen

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

La programación orientada a objetos es una poderosa metodología que se basa en varios pilares, entre ellos, la herencia. Este concepto nos permite crear clases madre, que actúan como plantillas, para formar nuevas clases hijas. En lugar de repetir atributos y métodos comunes, las clases hijas pueden heredar todas las propiedades de la clase madre, promoviendo la reutilización del código y el orden.

¿Por qué importar la herencia en el contexto de Platzi?

En Platzi, los estudiantes tienen ciertas variaciones, como estudiantes con suscripción y estudiantes sin suscripción. Esta diversificación es crucial para que la plataforma ofrezca correctamente sus servicios. La herencia se utiliza para definir características comunes de todos los estudiantes en una clase madre "Student" y especificar los detalles únicos para los distintos tipos de estudiantes en las respectivas clases hijas.

Ventajas de la herencia:

  • Reutilización de código: Reduce la necesidad de duplicar código, favoreciendo modificaciones centralizadas.
  • Orden y escalabilidad: Facilita extender funcionalidades sin desordenar la estructura del código.

¿Cómo evitar el desorden en el código con herencia?

Para manejar las diferencias entre tipos de estudiantes sin caer en un laberinto de condiciones, la herencia permite crear clases específicas para cada tipo de suscripción, como "FreeStudent", "BasicStudent" y "ExpertStudent". Así, podemos establecer en la clase madre "Student" los atributos comunes, como nombre, edad, email, cursos aprobados, etc. A partir de esta base, las clases hijas extienden sus particularidades sin necesidad de escribir de nuevo todos esos datos compartidos.

class Student {
  constructor(name, age, email) {
    this.name = name;
    this.age = age;
    this.email = email;
  }
}

class FreeStudent extends Student {
  // Implementa métodos específicos para estudiantes sin suscripción
}

class BasicStudent extends Student {
  // Implementa métodos específicos para estudiantes con suscripción básica
}

class ExpertStudent extends Student {
  // Implementa métodos para estudiantes con suscripción experta
}

Las clases hijas usan la palabra reservada extends para heredar de la clase madre. Esta es la magia que simplifica la estructura y administra eficazmente las diferencias en las funcionalidades.

¿Qué beneficios trae programar con herencia?

Implementar herencia no solo optimiza el uso de recursos al evitar la repetición, sino que también prepara el terreno para una aplicación robusta y flexible. Es fácil introducir nuevos tipos de estudiantes o modificar las reglas de una suscripción sin afectar las demás. Además, garantiza que cualquier cambio en la funcionalidad común se propague automáticamente a todas las clases hijas, manteniendo la consistencia.

Prácticas recomendadas:

  1. Identificar similitudes: Determinar atributos y métodos comunes para ubicarlos en la clase madre.
  2. Definir correctamente la jerarquía: Es crucial entender las relaciones entre las clases para una extensión adecuada.
  3. Modularidad: Mantener el código modular facilita la comprensión, el mantenimiento y la extensión del mismo.

Al emplear estos conceptos, se forman aplicaciones eficientes y escalables, tal como sucede en una plataforma diversa como Platzi. Así, la herencia no solo se convierte en una herramienta, sino en una estrategia vital para el desarrollo exitoso de software.