1
resposta

Utilizando interfaces

package br.com.alura.screenmatch.calculos;

public interface Classificavel {

    int getClassificacao();
} 

public class Filme extends Titulo implements Classificavel {

    public int getClassificacao() {
        return (int) pegaMedia() / 2;
}
public class Episodio implements Classificavel {

    private int totalVisualizacoes;
    //outros atributos omitidos…

    public int getClassificacao() {
        if (totalVisualizacoes > 100) {
            return 4;
        } else {
            return 2;
        }
    }
}
package br.com.alura.screenmatch.calculos;

public class FiltroRecomendacao {
    
    public void filtrar(Classificavel classificavel) {
        if (classificavel.getClassificacao() >= 4) {
            System.out.println(“Está entre os preferidos no 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”);
    }
}

Episodio primeiro = new Episodio();
primeiro.setNumero(1);
primeiro.setSerie(serie);
primeiro.settotalVisualizacoes(300);

FiltroRecomendacao filtro = new FiltroRecomendacao();
filtro.filtrar(favorito);
filtro.filtrar(outro);
filtro.filtrar(primeiro);
1 resposta

Oi, Eleazar! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Você fez um excelente uso da interface Classificavel para aplicar polimorfismo nas classes Filme e Episodio. A ideia de centralizar a lógica de recomendação com FiltroRecomendacao ficou bem clara e reutilizável. Esse padrão facilita bastante a manutenção e evolução do código.

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