1
resposta

Implementando a funcionalidade de classificação de títulos.

import br.alura.screanmeatch.calculo.CalculadoraDetempo;
import br.alura.screanmeatch.calculo.FiltroRecomendacao;
import br.com.alura.screanmatch.modelos.Episodio;
import br.com.alura.screanmatch.modelos.Filme;
import br.com.alura.screanmatch.modelos.Serie;


public class Principal {
    public static void main(String[] args) {


        Filme meuFilme = new Filme();
        meuFilme.setNome("Filme: Ainda estou aqui");
        meuFilme.setAnoDeLancamento( 2024);
        meuFilme.setDuracaoEmMinutos( 180);
        System.out.println("Duração do meu filme: " + meuFilme.getDuracaoEmMinutos());


        meuFilme.exibirFichaTecnica();
        meuFilme.avalia(8);
        meuFilme.avalia(9);
        meuFilme.avalia(10);

        System.out.println("Total de avaliações: " + meuFilme.getTotalDeAvaliacoes());
        System.out.println("Media das avaliações: " + meuFilme.pegaMedia());

        Serie aRodaDoTempo = new Serie();
        aRodaDoTempo.setNome("Série: A Roda Do Tempo");
        aRodaDoTempo.setAnoDeLancamento(2000);
        aRodaDoTempo.exibirFichaTecnica();
        aRodaDoTempo.setTemporadas(10);
        aRodaDoTempo.setEpisodiosPorTemporada(10);
        aRodaDoTempo.setMinutosPorEpisodios(50);
        System.out.println("Duração para maratonar A roda do tempo  " + aRodaDoTempo.getDuracaoEmMinutos());


        CalculadoraDetempo calculadora = new CalculadoraDetempo();
        calculadora.inclui(meuFilme);
        calculadora.inclui(aRodaDoTempo);
        System.out.println("Tempo para ver todos: "+calculadora.getTempototal());

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

        Episodio episodio = new Episodio();
        episodio.setNome("1");
        System.out.println("A Roda do tempo episódio "+ episodio.getNome());
        episodio.setSerie(aRodaDoTempo);
        episodio.setTotalVisualizacoes(300);
        filtro.fitra(episodio);

    }
}
public interface Classificavel {
    int getClassificacao();

}
package br.alura.screanmeatch.calculo;

public class FiltroRecomendacao {
    private String recomendacao;

    public void fitra(Classificavel classificavel){
        if (classificavel.getClassificacao() >=4){
            System.out.println("Está entre os preferidos do momento");
        } else if (classificavel.getClassificacao() >= 2 ){
            System.out.println("Muito bem avaliado no momento");
        } else {
            System.out.println("Coloque na sua lista para assistir depois");
        }
    }
}
package br.alura.screanmeatch.calculo;

public class FiltroRecomendacao {
    private String recomendacao;

    public void fitra(Classificavel classificavel){
        if (classificavel.getClassificacao() >=4){
            System.out.println("Está entre os preferidos do momento");
        } else if (classificavel.getClassificacao() >= 2 ){
            System.out.println("Muito bem avaliado no momento");
        } else {
            System.out.println("Coloque na sua lista para assistir depois");
        }
    }
}
package br.com.alura.screanmatch.modelos;

import br.alura.screanmeatch.calculo.Classificavel;

public class Episodio implements Classificavel {
    private  int numero;
    private  String nome;
    private Serie serie;
    private int totalVisualizacoes;
    

    public int getTotalVisualizacoes() {
        return totalVisualizacoes;
    }

    public void setTotalVisualizacoes(int totalVisualizacoes) {
        this.totalVisualizacoes = totalVisualizacoes;
    }

    public int getNumero() {
        return numero;
    }

    public String getNome() {
        return nome;
    }

    public Serie getSerie() {
        return serie;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setSerie(Serie serie) {
        this.serie = serie;
    }


    @Override
    public int getClassificacao() {
        if (totalVisualizacoes > 100){
          return  4 ;
        } else{
            return 2;
        }

    }
}
package br.com.alura.screanmatch.modelos;

import br.alura.screanmeatch.calculo.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;
  }
}

Print da compilação do código

1 resposta

Oi, Terezinha! Como vai?

Obrigada por compartilhar seu código com a comunidade Alura.

Gostei da forma como você aplicou a interface Classificavel nos seus objetos, como Filme e Episodio, para implementar a classificação. Isso garante que a lógica de recomendação seja reutilizável de maneira eficiente. Além disso, o uso de FiltroRecomendacao está bem estruturado, facilitando a aplicação da lógica de recomendação baseada na avaliação.

💡 Uma curiosidade interessante: você pode usar o método Collections.sort() para ordenar listas de objetos, como filmes ou episódios, com base na classificação. Veja um exemplo de código que ordena filmes por classificação:


import java.util.*;
List filmes = new ArrayList<>();
// Adicione filmes à lista
Collections.sort(filmes, (f1, f2) -> Integer.compare(f2.getClassificacao(), f1.getClassificacao()));

Esse código ordena a lista de filmes do mais bem classificado para o menos classificado. Isso pode ser útil quando você deseja exibir uma lista de filmes ordenada, por exemplo, nas recomendações.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!