Saludos. Adjunto mi versión de ejercicio. Estoy atento ante cualquier novedad. Espero les sirva.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>FirstProgram</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Servicio
package Services;
import Implementations.Clasificacion;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class FiltroRecomendacion {
private final Clasificacion clasificacion;
private String mensaje;
public void filtrar(){
mensaje = (clasificacion.getClasificacion() >= 4) ? "Muy bien evaluado en el momento"
: (clasificacion.getClasificacion() >= 2) ? "Popular en el momento"
: "Colocalo en tu lista para verlo despues";
System.out.println(mensaje);
}
}
entidad episodio
package Models;
import Implementations.Clasificacion;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Episodio implements Clasificacion {
private int numero;
private String nombre;
private Serie serie;
private int totalVisualizaciones;
@Override
public int getClasificacion() {
return (totalVisualizaciones > 100) ? 4 : 2;
}
}
entidad pelicula
package Models;
import Implementations.Clasificacion;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@NoArgsConstructor
@AllArgsConstructor
@Data
@ToString (callSuper = true)
public final class Pelicula extends Titulo implements Clasificacion {
private String director;
@Override
public void evalua(double nota) {
super.evalua(nota);
}
@Override
public int getClasificacion() {
return (int) getMediaEvaluaciones();
}
}
implementaciones
package Implementations;
public interface Clasificacion {
int getClasificacion();
}
contenedor de ejecución
package org.example;
import Models.Episodio;
import Models.Pelicula;
import Models.Serie;
import Services.FiltroRecomendacion;
import java.util.Scanner;
public class Main {
// private static final Scanner entry = new Scanner(System.in).useDelimiter("\n");
public static void main(String[] args) {
//Instanciación películas y series
Pelicula pelicula = new Pelicula();
Serie serie = new Serie();
//seteo de parámetros objeto pelicula
pelicula.setNombre("Encanto");
pelicula.setFechaLanzamiento(2021);
pelicula.setDuracionMinutos(120);
pelicula.setDirector("Alfredo");
//Evaluación película encanto
pelicula.evalua(4.6);
pelicula.evalua(4.9);
pelicula.evalua(4.4);
//Seteo parametros serie
serie.setNombre("lucifer");
serie.setFechaLanzamiento(2013);
serie.setTemporada(6);
serie.setMinutosPorEpisodio(50);
serie.setEpisodiosPorTemporada(13);
serie.setDuracionMinutos(serie.getDuracionMinutos());
//Evaluación serie lucifer
serie.evalua(5.6);
serie.evalua(4.9);
serie.evalua(9.8);
FiltroRecomendacion filtroRecomendacion = new FiltroRecomendacion(pelicula);
filtroRecomendacion.filtrar();
Episodio episodio = new Episodio();
episodio.setNombre("A devil of my word");
episodio.setNumero(3);
episodio.setSerie(serie);
episodio.setTotalVisualizaciones(1450);
FiltroRecomendacion filtroSerie = new FiltroRecomendacion(episodio);
filtroSerie.filtrar();
//Impresiones por pantalla de los objetos
System.out.println("Detalles película: \n" + pelicula.toString());
System.out.println("Detalles serie: \n" + serie.toString());
}
}