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

Desafio

Calculadora de tiempo

package com.aluracursos.project.calculos;

import com.aluracursos.project.modelos.Pelicula;
import com.aluracursos.project.modelos.Serie;
import com.aluracursos.project.modelos.Titulo;

public class CalculadoraDeTiempo {
    private int tiempoTotal;

    public int getTiempoTotal() {
        return tiempoTotal;
    }

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

Titulo

package com.aluracursos.project.modelos;

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

    public int getTotalDeLasEvaluaciones() {
        return totalDeLasEvaluaciones;
    }

    public String getNombre() {
        return nombre;
    }

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

    public int getFechaLanzamiento() {
        return fechaLanzamiento;
    }

    public void setFechaLanzamiento(int fechaLanzamiento) {
        this.fechaLanzamiento = fechaLanzamiento;
    }

    public int getDuracionEnMinutos() {
        return duracionEnMinutos;
    }

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

    public boolean isIncluidoEnElPlan() {
        return incluidoEnElPlan;
    }

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

    public void muestraFichaTecnica(){
        System.out.println("El nombre de la pelicula es: " + getNombre());
        System.out.println("La fecha de lanzamiento es: " + getFechaLanzamiento());
        System.out.println("Duracion en minutos: " + getDuracionEnMinutos());
    }

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

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

Serie

package com.aluracursos.project.modelos;

public class Serie extends Titulo {
   private int temporadas;
   private int episodiosPorTemporada;
   private 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;
    }
}
1 respuesta

Hola Bianca, espero que estés bien

¡Espero que estés disfrutando del curso! Por lo que veo, ya has avanzado bastante en la implementación de tu proyecto aplicando conceptos de herencia y polimorfismo. Vamos a revisar tu código para asegurarnos de que estás en el camino correcto.

Tu clase CalculadoraDeTiempo parece estar bien diseñada para acumular el tiempo total de los títulos que se le añaden, utilizando el método incluye(Titulo titulo). Este método hace uso del polimorfismo, ya que puede recibir tanto objetos de la clase Titulo como de sus subclases, como Serie.

En la clase Serie, has sobrescrito correctamente el método getDuracionEnMinutos() para calcular la duración total de la serie basándote en el número de temporadas, episodios por temporada y minutos por episodio. Esto es un buen ejemplo de polimorfismo, ya que Serie tiene su propia implementación de este método, diferente de la clase Titulo.

Aquí tienes un pequeño ejemplo de cómo podrías utilizar estas clases:

public class Main {
    public static void main(String[] args) {
        Pelicula pelicula = new Pelicula();
        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");
    }
}

Este código crea una película y una serie, las añade a la calculadora de tiempo y luego imprime el tiempo total de visualización.

Espero que este ejemplo te sea útil y que continúes aprendiendo y aplicando estos conceptos con éxito. ¡Bons estudos!