Curso Java. Clases Abstractas I. Vídeo 45

Curso Java. Clases Abstractas I. Vídeo 45

¿Qué son las clases abstractas en Java?

Introducción a la herencia y clases abstractas

  • El video se centra en el concepto de clases abstractas dentro del contexto de la herencia en Java, explicando su importancia y cómo construirlas.
  • Se menciona una jerarquía de herencia que incluye una clase principal, Empleado, y su subclase Jefatura, sugiriendo la posibilidad de extender esta jerarquía con una clase Director.

Jerarquía de herencia y especialización

  • La discusión gira en torno a cuál clase es más especializada; se concluye que la clase más baja en la jerarquía (como Director) es la más capaz debido a que hereda métodos de sus superclases.
  • Se aclara que aunque intuitivamente podríamos pensar que las clases superiores son más potentes, en realidad, las subclases tienen acceso a un mayor número de métodos heredados.

Comprendiendo la abstracción

  • A medida que se asciende en la jerarquía, las clases tienden a ser menos especializadas y más genéricas o abstractas. Esto implica que al crear una nueva clase por encima de Empleado, esta sería menos específica.
  • Un ejemplo práctico se presenta al considerar crear una clase Persona como superclase. Esta tendría menos métodos específicos comparada con Empleado.

Aplicación práctica: Métodos heredados

  • Se discute cómo los métodos como Dame sueldo no serían apropiados para incluirlos en la clase Persona, ya que no todas las personas tienen un sueldo.
  • En contraste, el método Dame Nombre sí tiene sentido para ser parte de la clase Persona, dado que todas las personas tienen un nombre.

Conclusiones sobre diseño orientado a objetos

  • La importancia del diseño correcto se enfatiza mediante ejemplos prácticos sobre qué métodos deben pertenecer a cada nivel de la jerarquía.

Diseño de Herencia en Programación

Jerarquía de Clases y Métodos

  • Se propone trasladar el método DameNombre de la clase Empleado a la clase Persona, asegurando que todos los empleados, jefes y directores hereden este método, ya que todos tienen un nombre.
  • El método DameSueldo debe permanecer en la clase Empleado, permitiendo que solo las clases relacionadas (empleados, jefes y directores) tengan acceso a él. Esto es relevante si se introduce una nueva clase como Alumno, que no tiene sueldo.
  • La nueva clase Alumno debería heredar de Persona, pero no de Empleado, Jefe o Director, dado que un alumno no recibe un sueldo, aunque sí tiene un nombre.
  • La jerarquía de herencia permite que tanto empleados como alumnos compartan el método DameNombre. Además, se establece que un alumno es considerado una persona dentro del diseño.

Características Comunes entre Clases

  • Se plantea la pregunta sobre qué otras características comunes tienen los objetos derivados de la clase Persona. Una posible característica es una descripción general para cada tipo de objeto.
  • Se sugiere crear el método DameDescripción en la clase Persona, permitiendo así su herencia por parte de todas las subclases. Sin embargo, este método tendrá implementaciones diferentes según el tipo de objeto.

Descripción Abstracta

  • A diferencia del método DameNombre, donde todos los objetos devuelven el mismo valor (su nombre), el método DameDescripción requerirá definiciones específicas para cada subclase debido a sus diferencias inherentes.
  • Por ejemplo, un empleado puede tener atributos como ID identificativo y departamento, mientras que un alumno carece de estos elementos. Esto complica la creación de una descripción común.
  • Para resolver esta complejidad, se propone declarar el método como abstracto. Un método abstracto en Java no tiene implementación; simplemente se define su firma sin cuerpo.

Declaración del Método Abstracto

  • En Java, al declarar un método abstracto se utiliza la palabra clave 'public', seguida por 'abstract', luego el tipo de dato retornado y finalmente el nombre del método con paréntesis. No lleva llaves ni contenido interno.
  • Al definir un método abstracto en una clase (Persona), esta también debe ser declarada como abstracta. Esto es obligatorio si existe al menos un método abstracto en ella.

Ejemplo Práctico

  • La declaración sería:

public abstract String DameDescripción();

Este formato indica claramente cómo deben estructurarse los métodos dentro de clases abstractas en Java.

  • Finalmente, para declarar una clase como abstracta se utiliza:

public abstract class Persona

// Constructor y otros métodos aquí

¿Cómo se declara una clase abstracta en Java?

Conceptos de clases abstractas y métodos

  • Al declarar un método como abstracto, también es necesario declarar la clase que lo contiene (en este caso, persona) como abstracta. Esto establece un patrón en el diseño de la jerarquía de herencia.
  • La declaración de un método abstracto obliga a todas las clases que heredan de persona a sobreescribir dicho método. Por ejemplo, el método Dame descripción debe ser implementado por cada subclase.
  • Las clases que heredan de persona, como empleado, jefatura, director y alumno, deben implementar su propia versión del método heredado para cumplir con la obligación impuesta por la clase abstracta.

Diseño y patrones en la herencia

  • Crear una clase abstracta con métodos abstractos establece un patrón obligatorio que todas las subclases deben seguir al diseñar su jerarquía de herencia.
  • En el diseño propuesto, se plantea que todas las clases derivadas deben tener un nombre. Para ello, se puede crear un método común llamado Dame nombre dentro de la clase base (persona).

Implementación del método 'Dame descripción'

  • Se necesita implementar el método Dame descripción para todos los objetos derivados (empleados, jefes, directores y alumnos). Sin embargo, cada uno tendrá una implementación diferente debido a sus características únicas.
  • Dado que las descripciones varían entre diferentes tipos de objetos (empleados vs. directores), es necesario declarar el método como abstracto en la clase base para forzar a las subclases a proporcionar su propia implementación.

Complejidad y práctica

  • Se reconoce que estos conceptos pueden ser complejos para quienes son nuevos en programación orientada a objetos. Es importante entender cómo funcionan las clases y métodos abstractos antes de avanzar.
  • El próximo video se centrará en llevar estos conceptos teóricos a la práctica mediante ejemplos concretos en Eclipse, facilitando así una mejor comprensión del tema.

Resumen del siguiente paso

  • En el siguiente video se construirá una jerarquía más simple sin incluir algunas clases intermedias (como jefatura o director), enfocándose solo en las tres principales: persona, empleado y alumno.
Video description

En este vídeo se explica en que consiste una clase abstracta, qué sentido tiene crear una clase abstracta y qué implica. Para más cursos, ejercicios y manuales visita: http://www.pildorasinformaticas.com