Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos en aula: aplicando polimorfismo con herencia. Crea las clases Título, Serie y CalculadoraDeTiempo.

Titulo.java

package com.aluracursos.screenmatch.modelos;

public class Titulo {
    private String nombre;
    private int fechaDeLanzamiento;
    private int duracionEnMinutos;
    private boolean incluidoEnElPlan;
    private double sumaDeLasEvaluaciones;
    private int totalDeLasEvaluaciones;

    public String getNombre() {
        return nombre;
    }

    public int getFechaDeLanzamiento() {
        return fechaDeLanzamiento;
    }

    public int getDuracionEnMinutos() {
        return duracionEnMinutos;
    }

    public boolean isIncluidoEnElPlan() {
        return incluidoEnElPlan;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setFechaDeLanzamiento(int fechaDeLanzamiento) {
        this.fechaDeLanzamiento = fechaDeLanzamiento;
    }

    public void setDuracionEnMinutos(int duracionEnMinutos) {
        this.duracionEnMinutos = duracionEnMinutos;
    }

    public void setIncluidoEnElPlan(boolean incluidoEnElPlan) {
        this.incluidoEnElPlan = incluidoEnElPlan;
    }

    public int getTotalDeLasEvaluaciones(){
        return totalDeLasEvaluaciones;
    }

    public void muestraFichaTecnica(){
        System.out.println("El nombre de la película es: " + nombre);
        System.out.println("Su fecha de lanzamiento es: " + fechaDeLanzamiento);
        System.out.println("Duracion en minutos: " + getDuracionEnMinutos());
    }

    public void evalua(double nota){
        sumaDeLasEvaluaciones += nota;
        totalDeLasEvaluaciones++;
    }

    public double calculaMedia(){
        return sumaDeLasEvaluaciones / totalDeLasEvaluaciones;
    }
}

Serie.java

package com.aluracursos.screenmatch.modelos;

public class Serie extends Titulo {
    int temporadas;
    int episodiosPorTemporada;
    int minutosPorEpisodio;

    @Override
    public int getDuracionEnMinutos() {
        return temporadas * episodiosPorTemporada * minutosPorEpisodio;
    }

    public int getTemporadas() {
        return temporadas;
    }

    public void setTemporadas(int temporadas) {
        this.temporadas = temporadas;
    }

    public int getEpisodiosPorTemporada() {
        return episodiosPorTemporada;
    }

    public void setEpisodiosPorTemporada(int episodiosPorTemporada) {
        this.episodiosPorTemporada = episodiosPorTemporada;
    }

    public int getMinutosPorEpisodio() {
        return minutosPorEpisodio;
    }

    public void setMinutosPorEpisodio(int minutosPorEpisodio) {
        this.minutosPorEpisodio = minutosPorEpisodio;
    }
}

CalculadoraDeTiempo.java

package com.aluracursos.screenmatch.calculos;
import com.aluracursos.screenmatch.modelos.Titulo;


public class CalculadoraDeTiempo {
    private int tiempoTotal;

    public int getTiempoTotal() {
        return tiempoTotal;
    }

    public void incluye(Titulo titulo){
        this.tiempoTotal += titulo.getDuracionEnMinutos();
    }

}
1 respuesta

Hola Walter, espero que estés bien

¡Gracias por compartir tu código! Parece que estás en el camino correcto aplicando los conceptos de herencia y polimorfismo en Java. Vamos a revisar lo que has hecho y ver si hay algo que puedas mejorar o ajustar.

  1. Herencia: Has creado una clase Serie que extiende de Titulo, lo cual es un buen uso de la herencia. Esto te permite reutilizar el código de Titulo y añadir o modificar comportamientos específicos para Serie.

  2. Polimorfismo: En tu clase CalculadoraDeTiempo, estás utilizando el método incluye(Titulo titulo) para sumar la duración de cualquier objeto que sea una instancia de Titulo o sus subclases, como Serie. Esto es un buen ejemplo de polimorfismo, ya que CalculadoraDeTiempo trata a todos los objetos de tipo Titulo de la misma manera, sin importar si son instancias de Titulo o Serie.

  3. Sobrescritura de métodos: En la clase Serie, has sobrescrito el método getDuracionEnMinutos() para calcular la duración total de una serie basada en sus temporadas, episodios y minutos por episodio. Esto es un buen uso de la sobrescritura de métodos para adaptar la funcionalidad a las necesidades específicas de la subclase.

Un ejemplo práctico de cómo podrías usar estas clases sería el siguiente:

public class Main {
    public static void main(String[] args) {
        Titulo pelicula = new Titulo();
        pelicula.setNombre("Inception");
        pelicula.setDuracionEnMinutos(148);

        Serie serie = new Serie();
        serie.setNombre("Breaking Bad");
        serie.setTemporadas(5);
        serie.setEpisodiosPorTemporada(13);
        serie.setMinutosPorEpisodio(47);

        CalculadoraDeTiempo calculadora = new CalculadoraDeTiempo();
        calculadora.incluye(pelicula);
        calculadora.incluye(serie);

        System.out.println("Tiempo total de visualización: " + calculadora.getTiempoTotal() + " minutos");
    }
}

En este ejemplo, estamos creando una película y una serie, y luego calculamos el tiempo total de visualización usando la CalculadoraDeTiempo.

Espero que esto te ayude a entender mejor cómo aplicar herencia y polimorfismo en tu código. ¡Sigue adelante con tus estudios de Java!

Espero haber ayudado y buenos estudios!