Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

HAGA LO QUE HICIMOS: DECLARANDO CONSTRUCTORES (versión modificada)

Saludos. Anexo versión modificada de ejercicio de aula virtual con modificaciones para evitar código boilerplate. El ejercicio se realiza usando lombok y maven para gestión de dependencias.

pom

<?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>

clase abstracta título

package Models;

import lombok.*;

@NoArgsConstructor
@AllArgsConstructor
@Data
@RequiredArgsConstructor
public abstract class Titulo {

    @NonNull
    protected String nombre;
    @NonNull
    protected int fechaLanzamiento;
    protected int duracionMinutos;
    protected boolean incluidoEnPlan;
    protected double sumaEvaluaciones;
    protected int totalEvaluaciones;
    protected double mediaEvaluaciones;

    public void evalua(double nota){
        sumaEvaluaciones += nota;
        totalEvaluaciones ++;
        mediaEvaluaciones = sumaEvaluaciones / totalEvaluaciones;
    }
}

entidad película

package Models;

import Implementations.Clasificacion;
import lombok.*;

@NoArgsConstructor
@AllArgsConstructor
@Data
@ToString (callSuper = true)
public final class Pelicula extends Titulo implements Clasificacion {

    private String director;

    public Pelicula(@NonNull String nombre, @NonNull int fechaLanzamiento) {
        super(nombre, fechaLanzamiento);
    }

    @Override
    public void evalua(double nota) {
        super.evalua(nota);
    }

    @Override
    public int getClasificacion() {
        return (int) getMediaEvaluaciones();
    }
}

entidad serie

package Models;

import lombok.*;

@NoArgsConstructor
@AllArgsConstructor
@Data
@ToString(callSuper = true)
public final class Serie extends Titulo{

    private int temporada, episodiosPorTemporada, minutosPorEpisodio;

    public Serie(@NonNull String nombre, @NonNull int fechaLanzamiento) {
        super(nombre, fechaLanzamiento);
    }

    @Override
    public void evalua(double nota) {
        super.evalua(nota);
    }

    @Override
    public int getDuracionMinutos() {
        return temporada * episodiosPorTemporada * minutosPorEpisodio;
    }
}
1 respuesta

Hola Alejandro, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!