Saludos team, adjunto una versión de solución al ejercicio de aula virtual sobre POO. Para este ejercicio use el gestor de dependencias maven, y usé algunas anotaciones lombok para reducir la cantidad de código boilerplate. 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>
Modelo
package Models;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Pelicula {
private String nombre;
private int fechaLanzamiento;
private int duracionMinutos;
private boolean incluidoEnPlan;
private double sumaEvaluaciones;
private int totalEvaluaciones;
private double mediaEvaluaciones;
}
Servicio
package Services;
import Models.Pelicula;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class PeliculaService {
private final Pelicula pelicula;
public void evalua(double nota){
pelicula.setSumaEvaluaciones(pelicula.getSumaEvaluaciones() + nota);
pelicula.setTotalEvaluaciones(pelicula.getTotalEvaluaciones() + 1);
pelicula.setMediaEvaluaciones(pelicula.getSumaEvaluaciones()/ pelicula.getTotalEvaluaciones());
}
}
Contenedor de ejecución
package org.example;
import Models.Pelicula;
import Services.PeliculaService;
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
Pelicula pelicula = new Pelicula();
//Instanciación servicios con inyección de dependencia por constructor
PeliculaService servicioEncanto = new PeliculaService(pelicula);
//seteo de parámetros objeto pelicula
pelicula.setNombre("Encanto");
pelicula.setFechaLanzamiento(2021);
pelicula.setDuracionMinutos(120);
//Evaluación película encanto
servicioEncanto.evalua(4.9);
servicioEncanto.evalua(8.4);
servicioEncanto.evalua(8.6);
//Impresiones por pantalla de los objetos
System.out.println("Detalles película: \n" + pelicula.toString());
}
}