Clasificable.java
package com.aluracursos.screenmatch.calculos;
public interface Clasificable {
int getClasificacion();
}
Pelicula.java
import com.aluracursos.screenmatch.modelos.Titulo;
import com.aluracursos.screenmatch.calculos.Clasificable;
// NOTA: Debes tener el método calculaMedia() definido en Pelicula
public class Pelicula extends Titulo implements Clasificable {
// Constructor, getters y setters omitidos por brevedad...
// Implementación obligatoria de la interfaz Clasificable
@Override
public int getClasificacion() {
// Asumiendo que calculaMedia() devuelve la nota promedio
return (int) (calculaMedia() / 2);
}
// Otros métodos específicos de Pelicula...
public double calculaMedia() {
// Implementación de ejemplo para que compile
return 9.5;
}
}
Episodio.java
import com.aluracursos.screenmatch.calculos.Clasificable;
// Necesitas importar la clase Serie o definirla mínimamente
class Serie {}
public class Episodio implements Clasificable {
private int numero;
private String nombre;
private Serie serie;
private int totalVisualizaciones; // Atributo nuevo
// Implementación obligatoria de la interfaz Clasificable
@Override
public int getClasificacion() {
if (totalVisualizaciones >= 100){ // Usamos >= en lugar de > para incluir el 100
return 4;
} else {
return 2;
}
}
// Getters y Setters
public void setTotalVisualizaciones(int totalVisualizaciones) {
this.totalVisualizaciones = totalVisualizaciones;
}
public void setNumero(int numero) {
this.numero = numero;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setSerie(Serie serie) {
this.serie = serie;
}
}
FiltroRecomendacion.java
package com.aluracursos.screenmatch.calculos;
public class FiltroRecomendacion {
/**
* Aplica Polimorfismo por Interfaz.
* Recibe cualquier objeto que implemente Clasificable (Pelicula, Episodio, etc.)
* @param clasificacion El objeto a evaluar.
*/
public void filtra(Clasificable clasificacion){
int nota = clasificacion.getClasificacion();
if (nota >= 4){
System.out.println("Muy bien evaluado en el momento");
} else if (nota >= 2){
System.out.println("Popular en el momento");
} else {
System.out.println("Colócalo en tu lista para verlo después");
}
}
}
Principal.java
public class Principal {
public static void main(String[] args) {
// Asumiendo que has creado miPelicula y casaDragon (Serie) previamente
// --- PREPARACIÓN (EJEMPLOS SIMPLIFICADOS) ---
// Debes reemplazar Titulo y Pelicula con tus implementaciones reales si no funcionan
class Titulo { int getDuracionEnMinutos() { return 120; } }
class Pelicula extends Titulo implements com.aluracursos.screenmatch.calculos.Clasificable {
@Override public int getClasificacion() { return 5; }
public double calculaMedia() { return 10.0; } // Ejemplo
}
Pelicula miPelicula = new Pelicula();
Serie casaDragon = new Serie(); // Necesitas la clase Serie
// --- CÓDIGO DE LA TAREA ---
Episodio episodio = new Episodio();
episodio.setNumero(1);
episodio.setNombre("La casa Targaryen");
episodio.setSerie(casaDragon);
episodio.setTotalVisualizaciones(50); // Clasificación = 2 (Popular)
FiltroRecomendacion filtroRecomendacion = new FiltroRecomendacion();
// 1. Filtra la Película (Clasificación 5 -> Muy bien evaluado)
filtroRecomendacion.filtra(miPelicula);
// 2. Filtra el Episodio (Clasificación 2 -> Popular)
filtroRecomendacion.filtra(episodio);
}
}