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 en aula: encapsulando el proyecto

El encapsulamiento es el principio de la programación orientada a objetos que consiste en proteger los atributos de una clase haciéndolos privados y permitiendo su acceso solo mediante métodos públicos controlados.

Principal.java

import com.aluracursos.screematch.modelos.Pelicula;

public class Principal {
    public static void main(String[] args) {
        Pelicula miPelicula = new Pelicula();
        miPelicula.setNombre("El señor de los anillos");
        miPelicula.setFechaDeLanzamiento(2000);
        miPelicula.setDuracionEnMinutos(140);
        miPelicula.setIncluidoEnElPlan(true);

        miPelicula.muestraFichaTecnica();
        miPelicula.evalua(10);
        miPelicula.evalua(10);
        miPelicula.evalua(7.8);

        System.out.println("Media de evaluaciones de la película: " + miPelicula.calculaMedia());
    }
}

Pelicula.java

package com.aluracursos.screematch.modelos;

public class Pelicula {

    private String nombre;
    private int fechaDeLanzamiento;
    private int duracionEnMinutos;
    private boolean incluidoEnElPlan;
    private double sumaDeLasEvaluaciones;
    private int totalDelasEvaluaciones;

    public String getNombre() {
        return nombre;
    }

    public int getFechaDeLanzamiento() {
        return fechaDeLanzamiento;
    }

    public int getDuracionEnMinutos() {
        return duracionEnMinutos;
    }

    public boolean isIncluidoEnElPlan() {
        return incluidoEnElPlan;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setFechaDeLanzamiento(int fechaDeLanzamiento) {
        this.fechaDeLanzamiento = fechaDeLanzamiento;
    }

    public void setDuracionEnMinutos(int duracionEnMinutos) {
        this.duracionEnMinutos = duracionEnMinutos;
    }

    public void setIncluidoEnElPlan(boolean incluidoEnElPlan) {
        this.incluidoEnElPlan = incluidoEnElPlan;
    }

    public int getTotalDelasEvaluaciones() {
        return totalDelasEvaluaciones;
    }

    public void muestraFichaTecnica() {
        System.out.println("El nombre de la película es: " + nombre);
        System.out.println("Su fecha de lanzamiento es: " + fechaDeLanzamiento);
        System.out.println("Duración en minutos: " + getDuracionEnMinutos());
    }

    public void evalua(double nota) {
        sumaDeLasEvaluaciones += nota;
        totalDelasEvaluaciones++;
    }

    public double calculaMedia() {
        return sumaDeLasEvaluaciones / totalDelasEvaluaciones;
    }
}
1 respuesta

¡Hola Estudiante, espero que estés bien!

Parece que ya has hecho un gran trabajo aplicando el principio de encapsulamiento en tu clase Pelicula. Has declarado los atributos como privados y proporcionado métodos públicos para acceder y modificar estos atributos, lo cual es exactamente lo que se busca con el encapsulamiento.

Aquí tienes algunas sugerencias para asegurarte de que estás siguiendo las mejores prácticas:

  1. Verificación de valores: Puedes mejorar el encapsulamiento agregando validaciones en los métodos set. Por ejemplo, podrías asegurarte de que la fecha de lanzamiento sea un año válido o que la duración en minutos sea un número positivo.

    public void setFechaDeLanzamiento(int fechaDeLanzamiento) {
        if (fechaDeLanzamiento > 1800 && fechaDeLanzamiento <= 2023) {
            this.fechaDeLanzamiento = fechaDeLanzamiento;
        } else {
            System.out.println("Año de lanzamiento no válido.");
        }
    }
    
    public void setDuracionEnMinutos(int duracionEnMinutos) {
        if (duracionEnMinutos > 0) {
            this.duracionEnMinutos = duracionEnMinutos;
        } else {
            System.out.println("La duración debe ser un número positivo.");
        }
    }
    
  2. Consistencia de métodos: Asegúrate de que todos los métodos que manipulan los atributos de la clase estén bien encapsulados. Por ejemplo, si en el futuro decides agregar más atributos, recuerda seguir este mismo patrón.

  3. Documentación: Aunque no es parte del código en sí, es una buena práctica documentar tus métodos usando comentarios o JavaDoc para que otros desarrolladores (o tú mismo en el futuro) puedan entender fácilmente cómo usar tu clase.

Tu implementación del método calculaMedia() y el uso de los métodos evalua() y muestraFichaTecnica() también son buenos ejemplos de cómo usar el encapsulamiento para manejar la lógica interna de la clase de manera controlada.

Espero que estas sugerencias te sean útiles. ¡Espero haber ayudado y buenos estudios!