Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio Java Coleção de filmes

Olá, segue o projeto.

  • Agora é com você! Faça o mesmo procedimento que eu fiz na aula, sobrescrevendo o método toString() na classe Filme, e alterando a classe Principal para criar uma lista de filmes.
package br.com.alura.screenmatch.modelos;

import br.com.alura.screenmatch.calculos.Classificavel;

public class Filme extends Titulo implements Classificavel {
    private String diretor;

    public String getDiretor() {
        return diretor;
    }

    public void setDiretor(String diretor) {
        this.diretor = diretor;
    }

    @Override
    public int getClassificacao() {
        return (int) pegaMedia() /2;
    }

    @Override
    public String toString() {
        return "Filme: " + this.getNome() + " (" + this.getAnoDeLancamento() + ")" ;

    }
}
import br.com.alura.screenmatch.calculos.CalculadoraDeTempo;
import br.com.alura.screenmatch.calculos.FiltroRecomendacao;
import br.com.alura.screenmatch.modelos.Episodio;
import br.com.alura.screenmatch.modelos.Filme;
import br.com.alura.screenmatch.modelos.Serie;

import java.util.ArrayList;

public class Principal {
    public static void main(String[] args) {
        Filme meuFilme = new Filme();
        meuFilme.setNome("O poderoso chefão");
        meuFilme.setAnoDeLancamento(1970);
        meuFilme.setDuracaoEmMinutos(180);
        System.out.println("Duração do filme " + meuFilme.getDuracaoEmMinutos());

        meuFilme.exibeFichaTecnica();
        meuFilme.avalia(8);
        meuFilme.avalia(5);
        meuFilme.avalia(10);
        System.out.println("Total de avaliações: " + meuFilme.getTotalDeAvaliacoes());
        System.out.println(meuFilme.pegaMedia());
//        meuFilme.somaDasAvaliacoes = 10;
//        meuFilme.totalDeAvaliacoes =1;
//        System.out.println(meuFilme.pegaMedia());

        Serie lost = new Serie();
        lost.setNome("Lost");
        lost.setAnoDeLancamento(2000);
        lost.exibeFichaTecnica();
        lost.setTemporadas(10);
        lost.setEpisodiosPorTemporada(10);
        lost.setMinutosPorEpisodio(50);
        System.out.println("Duração para maratonar Lost: " + lost.getDuracaoEmMinutos());

        Filme outroFilme = new Filme();
        outroFilme.setNome("Avatar");
        outroFilme.setAnoDeLancamento(2023);
        outroFilme.setDuracaoEmMinutos(200);

        CalculadoraDeTempo calculadora = new CalculadoraDeTempo();
        calculadora.inclui(meuFilme);
        calculadora.inclui(outroFilme);
        calculadora.inclui(lost);
        System.out.println(calculadora.getTempoTotal());

        FiltroRecomendacao filtro = new FiltroRecomendacao();
        filtro.filtra(meuFilme);

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

        var filmeDoPaulo = new Filme();
            filmeDoPaulo.setNome("Dogville");
            filmeDoPaulo.setAnoDeLancamento(2003);
            filmeDoPaulo.avalia(10);
            filmeDoPaulo.setDuracaoEmMinutos(200);

        ArrayList<Filme> listaDeFilmes = new ArrayList<>();
        listaDeFilmes.add(filmeDoPaulo);
        listaDeFilmes.add(meuFilme);
        listaDeFilmes.add(outroFilme);
        System.out.println("Tamanho da lista " + listaDeFilmes.size());
        System.out.println("Primeiro filme " + listaDeFilmes.get(0).getNome());
        System.out.println(listaDeFilmes);
        System.out.println("toString do filme "  + listaDeFilmes.get(0).toString());


2 respostas
solução!

Olá, Renato.

Tudo bem?

Muito obrigado por compartilhar o seu desafio aqui com a gente. Você já sobrescreveu o método toString() na classe Filme e criou uma lista de filmes na classe Principal. Vou revisar o que você fez e sugerir algumas melhorias, se necessário.

Classe Filme

Você sobrescreveu o método toString() corretamente:

@Override
public String toString() {
    return "Filme: " + this.getNome() + " (" + this.getAnoDeLancamento() + ")" ;
}

Isso vai garantir que quando você imprimir um objeto Filme, ele mostre o nome e o ano de lançamento do filme.

Saída Esperada

Quando você imprimir a lista de filmes, o método toString() será chamado automaticamente para cada objeto Filme na lista. A saída deve ser algo como:

Tamanho da lista 3
Primeiro filme Dogville
[Filme: Dogville (2003), Filme: O poderoso chefão (1970), Filme: Avatar (2023)]
toString do filme Filme: Dogville (2003)

Muito bom! Meus parabéns! Continue assim praticando e evoluindo em Java.

Qualquer dúvida manda aqui. Bons estudos.

Olá Renan, muito obrigado.

Abraços!