Curso Java. Herencia II. Vídeo 41

Curso Java. Herencia II. Vídeo 41

Introducción a la Herencia en Java

Continuación del Ejemplo de Herencia

  • El presentador da la bienvenida y menciona que se continuará con el ejemplo de herencia en Java, que quedó pendiente en el video anterior.
  • Se recuerda que se creó una clase Furgoneta que hereda de la clase Coche, lo cual permite reutilizar código y simplificar la programación.
  • Se explica el uso de la palabra clave super en el constructor para llamar al constructor de la superclase (Coche) y establecer valores iniciales como capacidad de carga y plazas extra.

Creación del Método Getter

  • Se introduce un método getter en la clase Furgoneta para devolver información sobre su capacidad de carga y plazas extra.
  • El método se denomina dimeDatosFurgoneta, y se establece que debe devolver un string con los datos relevantes utilizando las variables correspondientes.

Finalización de la Clase Furgoneta

  • Se concluye que el método getter proporcionará información específica sobre las características adicionales de la furgoneta, además de los métodos heredados.
  • La clase Furgoneta ahora tiene un estado inicial definido por su constructor, así como sus propias características específicas.

Uso Práctico de Clases en Java

Integración con Clase Principal

  • Se menciona que se utilizará una clase principal llamada UsoVehículo, donde se crearán instancias tanto para coches como para furgonetas.
  • El presentador abre esta clase principal, recordando que contiene el método main.

Renombrar Clase para Claridad

  • Para evitar confusiones, se decide renombrar la clase UsoCoche a UsoVehículo, lo cual es más apropiado dado que incluirá diferentes tipos de vehículos.
  • Se explica cómo renombrar una clase en Eclipse usando la opción "Refactor" para cambiar el nombre del archivo y asegurarse de que coincida con el nombre de la clase.

Limpieza del Código

  • Al eliminar código innecesario, Eclipse muestra advertencias sobre importaciones no utilizadas, lo cual es normal cuando se limpia el proyecto.
  • El presentador elimina directivas import no necesarias antes de proceder a crear nuevas instancias.

Creación e Instanciación

Creando Instancias

  • En el método main, comienza creando una instancia perteneciente a la clase Coche.

Estableciendo Color y Creando Objetos en Java

Uso del Método Setter para Establecer Color

  • Se introduce el método setter estableceColor de la clase Coche, que permite asignar un color a un objeto de tipo coche.
  • Al abrir el archivo coche.java, se localiza el método que recibe un parámetro de tipo String para establecer el color del coche.

Creación de una Instancia de Furgoneta

  • Se crea un objeto llamado miFurgoneta1 utilizando la clase Furgoneta, recordando que su constructor requiere dos parámetros: plazas extra y capacidad de carga.
  • El constructor es invocado con los valores 7 (plazas) y 580 (capacidad de carga), creando así la instancia correctamente.

Estado Inicial de los Objetos

  • Ambos objetos, miCoche1 y miFurgoneta1, son inicializados con propiedades como número de ruedas, peso, ancho y largo, definidos en sus respectivos constructores.

Herencia en Acción

  • Se demuestra cómo se puede establecer el color de la furgoneta usando el método heredado estableceColor desde la clase padre Coche.
  • Eclipse muestra todos los métodos disponibles al usar el punto después del nombre del objeto, evidenciando la herencia.

Configuración Adicional para Furgonetas

  • Además del color, se configuran características adicionales como asientos de cuero y climatizador utilizando métodos heredados.
  • La reutilización del código a través de herencia permite utilizar métodos sin necesidad de reprogramarlos en la clase hija.

Visualización en Consola

  • Para verificar las propiedades establecidas, se utiliza System.out.println para mostrar información sobre ambos objetos.

Introducción a la Herencia en Programación Orientada a Objetos

Conceptos Básicos de Herencia

  • Se menciona el uso de un método para concatenar el color del coche con su nombre, destacando la importancia de separar las instrucciones para evitar confusiones.
  • La furgoneta, como objeto, hereda características del coche, incluyendo propiedades como el número de ruedas y dimensiones iniciales.

Ejecución y Métodos

  • Al ejecutar una instrucción para mostrar los datos generales de la furgoneta, se observa que se presentan todos los métodos heredados del objeto coche.
  • Se confirma que al llamar al método "dame datos", se obtienen correctamente los datos generales de la furgoneta.

Datos Específicos y Métodos Propios

  • Se propone extender la funcionalidad mostrando no solo los datos generales sino también específicos como capacidad de carga y plazas extra.
  • Se utiliza un método propio "dime datos furgoneta" para obtener información específica sobre la furgoneta, demostrando cómo se combinan métodos heredados y propios.

Limitaciones en el Diseño Actual

  • Al intentar acceder a métodos específicos desde un objeto coche, se evidencia que ciertos métodos son exclusivos de la clase furgoneta.
  • Se plantea una analogía familiar sobre herencia en programación orientada a objetos, donde cada subclase puede tener sus propios métodos además de los heredados.

Reglas para Diseñar Herencia

  • Surge una pregunta clave sobre cómo diseñar adecuadamente la herencia entre clases. La regla fundamental es aplicar el término "es un".
  • El diseño actual muestra que una furgoneta no es simplemente un tipo de coche; esto indica que hay fallas en el diseño actual entre las clases.

Propuesta para Mejorar el Diseño

  • Para mejorar el diseño, se sugiere crear una clase principal llamada "vehículo" que contenga propiedades comunes a todos los vehículos.

Diseño de Clases en Programación Orientada a Objetos

Herencia de la Clase Vehículo

  • Se propone programar características dentro de la clase Vehículo, y luego crear clases específicas como Coche y Furgoneta que heredan de esta clase base.
  • La relación "es un" se aplica correctamente: un coche, una furgoneta, un camión y una moto son todos vehículos. Este diseño permite una mejor organización del código.

Mejora del Diseño

  • El diseño podría haber sido más eficiente si se hubiera considerado cuántos objetos serían necesarios desde el principio, sugiriendo la creación de cuatro clases en lugar de tres.
  • Cada clase específica (como Coche o Furgoneta) debe heredar características generales de la clase Vehículo, como color, peso y motor.

Clarificación sobre Herencia Múltiple

  • Se aclara que no hay herencia múltiple en este contexto; cada subclase solo hereda de una única clase padre (Vehículo).
Video description

Continuamos viendo y explicando el tema de la herencia en Java. Para más cursos, manuales y ejercicios, visita http://www.pildorasinformaticas.com