Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

HAGAMOS LO QUE APRENDIMOS

crear una nueva clase llamada Título en el paquete com.aluracursos.screenmatch.modelos, y trasladar a ella todos los atributos y métodos de la clase Pelicula:

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 es: " + nombre);
    System.out.println("Su fecha de lanzamiento es: " + fechaDeLanzamiento);
    System.out.println("Duración en minutos: "+ getDuracionEnMinutos());
}

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

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

}

En la clase Película, deberás heredar de la clase Título e incluir el atributo director junto con los métodos getter/setter de ese atributo:

public class Pelicula extends Titulo { private String director;

public String getDirector() {
    return director;
}

public void setDirector(String director) {
    this.director = director;
}

Copia el código Luego, deberás crear la clase Serie, que también heredará de la clase Título y tendrá los atributos temporadas, episodiosPorTemporada y minutosPorEpisodio, junto con los métodos getter/setter de estos atributos:

package com.aluracursos.screenmatch.modelos;

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

} Copia el código Aún en la clase Serie, sobrescribe el método getDuracaoEmMinutos:

@Override public int getDuracionEnMinutos() { return temporadas * episodiosPorTemporada * minutosPorEpisodio; } Copia el código Finalmente, crea el paquete com.aluracursos.screenmatch.calculos y dentro de él crea la clase CalculadoraDeTiempo:

package com.aluracursos.screenmacth.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();
}

}

Para probar los nuevos códigos, modifica el método main de la clase Principal:

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("Média de evaluaciones de la película: " + miPelicula.calculaMedia());


    
2 respuestas

Hola Yolima, espero que estés bien

¡Qué bueno que estás trabajando en aplicar los conceptos de herencia y polimorfismo! Parece que ya has hecho un gran progreso en la creación de las clases Titulo, Pelicula y Serie, así como en la implementación de la clase CalculadoraDeTiempo. Aquí tienes un resumen de lo que has hecho y algunas sugerencias para asegurarte de que todo esté funcionando correctamente:

  1. Clase Titulo: Has movido correctamente los atributos y métodos de la clase Pelicula a Titulo. Esto es un buen ejemplo de cómo utilizar la herencia para evitar la duplicación de código.

  2. Clase Pelicula: Hereda de Titulo y has añadido el atributo director con sus métodos getter y setter. Todo parece estar en orden aquí.

  3. Clase Serie: También hereda de Titulo y has añadido los atributos temporadas, episodiosPorTemporada y minutosPorEpisodio. Además, has sobrescrito el método getDuracionEnMinutos para calcular la duración total de la serie, lo cual es una aplicación perfecta de polimorfismo.

  4. Clase CalculadoraDeTiempo: Esta clase suma la duración de los títulos, utilizando el método incluye. Asegúrate de que estás llamando a este método con instancias de Pelicula o Serie para verificar que el polimorfismo está funcionando correctamente.

  5. Método main en Principal: Has creado una instancia de Pelicula y probado varios métodos. Sería útil también crear una instancia de Serie y probar la CalculadoraDeTiempo con ambos tipos de objetos para ver cómo se comporta el polimorfismo en acción.

Espero que esto te ayude a avanzar en tu proyecto. ¡Sigue así y buenos estudios!

¡Hola Yolima! ¿Cómo estás?

Gracias por tu aporte en el foro. Su contribución es esencial para el crecimiento de nuestra comunidad en Alura.

Sigue así y no dudes en volver al foro si tienes alguna pregunta o dificultad.

Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!