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

[Proyecto] Mi versión del proyecto

//Importando los recursos de Pelicula. import com.aluracursos.screenmacth.calculos.CalculadoraDeTiempo; import com.aluracursos.screenmatch.modelos.Pelicula; import com.aluracursos.screenmatch.modelos.Serie;

public class Principal { public static void main(String[] args) { Pelicula miPelicula = new Pelicula(); miPelicula.setNombre("Encanto"); miPelicula.setFechaDeLanzamiento(2021); miPelicula.setDuracionEnMinutos(120); miPelicula.setIncluidoEnElPlan(true);

    miPelicula.muestraFichaTecnica();
    miPelicula.evalua(10);
    miPelicula.evalua(10);
    miPelicula.evalua(7.8);
    System.out.println(miPelicula.getTotalDelasEvaluaciones());
    System.out.println(miPelicula.calculaMedia());

    Serie casaDragon= new Serie();
    casaDragon.setNombre("La casa del Dragon");
    casaDragon.setFechaDeLanzamiento(2022);
    casaDragon.setTemporadas(1);
    casaDragon.setMinutosPorEpisodio(50);
    casaDragon.setEpisodiosPorTemporada(10);
    casaDragon.muestraFichaTecnica();
    System.out.println(casaDragon.getDuracionEnMinutos());

    Pelicula otraPelicula = new Pelicula();
    otraPelicula.setNombre("Matrix");
    otraPelicula.setFechaDeLanzamiento(1998);
    otraPelicula.setDuracionEnMinutos(180);

    //Creando nueva instancia
    CalculadoraDeTiempo calculador = new CalculadoraDeTiempo();
    calculador.incluye(miPelicula);
    calculador.incluye(casaDragon);
    calculador.incluye(otraPelicula);
    System.out.println("Tiempo necesario para ver tus titulos favoritos estas vacacaiones "
            + calculador.getTiempoTotal() + " minutos");
}

}

package com.aluracursos.screenmacth.calculos; import com.aluracursos.screenmatch.modelos.Pelicula; import com.aluracursos.screenmatch.modelos.Serie; import com.aluracursos.screenmatch.modelos.Titulo;

public class CalculadoraDeTiempo { private int tiempoTotal;

public int getTiempoTotal() {
    return tiempoTotal;
}
//No haremos el setter porque, no queremos que alguien venga y ponga tiempoTotal=2

//Metodo. Incluyendo dentro de la lista
//Polimorfismo.  This=habalmos de la clase del tiempoTotal
public void incluye(Titulo titulo){
    this.tiempoTotal += titulo.getDuracionEnMinutos();
}

}

package com.aluracursos.screenmatch.modelos;

public class Titulo { //Atributos de la Clase Titulo private String nombre; private int fechaDeLanzamiento; private int duracionEnMinutos; private boolean incluidoEnElPlan; //No permitir al usuario ciertas acciones. 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;
}
//Metodo. Obtener
public int getTotalDelasEvaluaciones(){
    return totalDelasEvaluaciones;
}

//Metodo:  Generando Setter=Para colocar Datos.
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;
}

//Metodo
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("Duración en minutos: "+ getDuracionEnMinutos());
}
//Metodo que espera un parametro
public void evalua(double nota){
    sumaDeLasEvaluaciones += nota;
    totalDelasEvaluaciones++;
}
//Metodo que espera retorno
public double calculaMedia(){
    return sumaDeLasEvaluaciones / totalDelasEvaluaciones;
}

}

1 respuesta

Hola Wilder, espero que estés bien

Parece que estás trabajando en un proyecto que utiliza herencia y polimorfismo en Java. A partir del código que compartiste, ya has implementado una clase base Titulo y las clases derivadas Pelicula y Serie, lo cual es un buen comienzo para aplicar estos conceptos.

Aquí hay algunos puntos que podrías considerar para asegurarte de que estás aplicando correctamente herencia y polimorfismo:

  1. Herencia: Ya tienes la clase Titulo como una clase base, y Pelicula y Serie parecen ser subclases de Titulo. Asegúrate de que Pelicula y Serie extiendan Titulo. Por ejemplo:

    public class Pelicula extends Titulo {
        // Métodos y atributos específicos de Pelicula
    }
    
    public class Serie extends Titulo {
        private int temporadas;
        private int episodiosPorTemporada;
        private int minutosPorEpisodio;
    
        // Métodos y atributos específicos de Serie
    }
    
  2. Polimorfismo: Ya estás utilizando polimorfismo en el método incluye de CalculadoraDeTiempo, que acepta un objeto de tipo Titulo. Esto te permite pasar tanto Pelicula como Serie a este método. Asegúrate de que Serie también tenga el método getDuracionEnMinutos(), que puede calcular la duración total de la serie. Por ejemplo:

    @Override
    public int getDuracionEnMinutos() {
        return temporadas * episodiosPorTemporada * minutosPorEpisodio;
    }
    
  3. Uso de métodos sobrescritos: Si Serie o Pelicula tienen comportamientos específicos que difieren de Titulo, considera sobrescribir métodos para reflejar esos comportamientos. Por ejemplo, podrías sobrescribir muestraFichaTecnica en Serie para mostrar información específica de las series.

Tu implementación parece estar en el camino correcto, pero asegúrate de que las clases Pelicula y Serie extiendan correctamente Titulo y que cualquier método que deba ser específico de una subclase esté adecuadamente sobrescrito.

Espero que estos consejos te sean útiles y te ayuden a avanzar con tu proyecto. ¡Espero haber ayudado y buenos estudios!