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

[Sugerencia] Haga lo que hicimos en aula: ArrayList y toString

package com.alura.screenmatch.modelos;

import com.alura.screenmatch.calculos.Clasificable;

public class Pelicula extends Titulo implements Clasificable {
    private String director;

    public String getDirector() {
        return director;
    }

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

    @Override
    public int getClasificacion() {
        return (int) calculaMediaEvaluaciones() / 2;
    }

    @Override
    public String toString() {
        return "Pelicula: " +this.getNombre() + " (" + this.getFechaDeLanzamiento() + ")";
    }
}

import com.alura.screenmatch.calculos.CalculadoraDeTiempo;
import com.alura.screenmatch.calculos.FiltroRecomendacion;
import com.alura.screenmatch.modelos.Episodio;
import com.alura.screenmatch.modelos.Pelicula;
import com.alura.screenmatch.modelos.Serie;

import java.util.ArrayList;

public class Principal {
    public static void main(String[] args) {
        Pelicula miPelicula = new Pelicula();
        miPelicula.setNombre("Encanto");
        miPelicula.setFechaDeLanzamiento(2021);
        miPelicula.setDuracionEnMinutos(180);
        System.out.println("Duración de la película: " + miPelicula.getDuracionEnMinutos());

        miPelicula.muestraFichaTecnica();
        miPelicula.evalua(8);
        miPelicula.evalua(5);
        miPelicula.evalua(10);
        System.out.println("Total de evaluaciones: " + miPelicula.getTotalDeEvaluaciones());
        System.out.println(miPelicula.calculaMediaEvaluaciones());


        Serie lost = new Serie();
        lost.setNombre("Lost");
        lost.setFechaDeLanzamiento(2000);
        lost.muestraFichaTecnica();
        lost.setTemporadas(10);
        lost.setEpisodiosPorTemporada(10);
        lost.setMinutosPorEpisodio(50);
        System.out.println("Duracion de la série: " + lost.getDuracionEnMinutos());

        Pelicula otraPelicula = new Pelicula();
        otraPelicula.setNombre("Avatar");
        otraPelicula.setFechaDeLanzamiento(2023);
        otraPelicula.setDuracionEnMinutos(200);

        CalculadoraDeTiempo calculadora = new CalculadoraDeTiempo();
        calculadora.incluido(miPelicula);
        calculadora.incluido(otraPelicula);
        calculadora.incluido(lost);
        System.out.println(calculadora.getTiempoTotal());

        FiltroRecomendacion filtro = new FiltroRecomendacion();
        filtro.filtra(miPelicula);

        Episodio episodio = new Episodio();
        episodio.setNumero(1);
        episodio.setSerie(lost);
        episodio.setTotalVisualizaciones(300);
        filtro.filtra(episodio);

        ArrayList listaDePeliculas = new ArrayList<>();
        listaDePeliculas.add(miPelicula);
        listaDePeliculas.add(otraPelicula);
        System.out.println("Tamaño de la pelicula: " + + listaDePeliculas.size());
        System.out.println("Primera pélicula: " + listaDePeliculas.get(0));
        System.out.println(listaDePeliculas);

    }
}
1 respuesta

Hola Juan, espero que estés bien

Parece que estás en el camino correcto con tu implementación. Has sobrescrito el método toString() en la clase Pelicula, lo cual es fundamental para que cuando imprimas una instancia de Pelicula desde una lista, se muestre de manera legible y significativa. Esto es exactamente lo que se hizo en la clase.

En tu clase Principal, ya has creado un ArrayList y has añadido instancias de Pelicula a esta lista. Cuando imprimes la lista completa, gracias al método toString() sobrescrito, se mostrará la información de las películas de una forma más clara.

Solo asegúrate de que cuando imprimas listaDePeliculas, estás utilizando el método toString() de la clase Pelicula. Dado que ya has sobrescrito este método, al llamar System.out.println(listaDePeliculas), Java usará automáticamente el método toString() de cada objeto en la lista.

Asegúrate de que tu ArrayList esté tipado correctamente como ArrayList<Pelicula>, lo que ayuda a evitar errores y hace que tu código sea más claro.

Espero que esto te ayude y te deseo buenos estudios!