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

2.2.11 Haga lo que hicimos en aula: encapsulando el proyecto Siguiente pregunta

Hola, les comparto mi codigo

Clase Pelicula

package com.aluracursos.screenmatch.modelos;

public class Pelicula  {
    private String nombre;
    private int fechaDeLanzamiento;
    private int duracionEnMinutos;
    private boolean incluidoEnElPlan;
    // Que la variable sea privada
    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) {
        // el this lo que esta indicando es que nos estamos refiriendo al atributo de esta clase y no al valor que nuestro usuario va a pasar
        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;
    }

    // Se coloca get cuando se quiere obtener algo
    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: "+ duracionEnMinutos);
    }

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

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


}

Clase Principal

import com.aluracursos.screenmatch.modelos.Pelicula;

public class Principal {
    public static void main(String[] args) {
        Pelicula miPelicula = new Pelicula();
        miPelicula.setNombre("Encanto");
        miPelicula.setFechaDeLanzamiento(2021);
        miPelicula.setDuracionEnMinutos(120);
        miPelicula.setIncluidoEnElPlan(true);

        System.out.println("Nombre: " + miPelicula.getNombre());

//        miPelicula.muestraFichaTecnica();
        miPelicula.evalua(10);
        miPelicula.evalua(10);
        miPelicula.evalua(9);
        System.out.println(miPelicula.getTotalDelasEvaluaciones());
        System.out.println(miPelicula.calculaMedia());


    }
}
1 respuesta

Hola, Nelli, espero que estés bien

¡Gracias por compartir tu código! Parece que estás haciendo un gran trabajo aplicando el concepto de encapsulamiento en tu proyecto. El encapsulamiento es fundamental para proteger los atributos de una clase y asegurar que solo puedan ser modificados de manera controlada a través de métodos específicos.

Revisando tu código, veo que has hecho un buen uso de los métodos get y set para acceder y modificar los atributos privados de la clase Pelicula. Esto es exactamente lo que se busca al aplicar el encapsulamiento.

Aquí tienes un par de sugerencias para mejorar aún más tu código:

  1. Validación de Datos: Podrías agregar validaciones en los métodos set para asegurarte de que los datos ingresados sean válidos. Por ejemplo, podrías verificar que la duración de la película no sea negativa.

    public void setDuracionEnMinutos(int duracionEnMinutos) {
        if (duracionEnMinutos > 0) {
            this.duracionEnMinutos = duracionEnMinutos;
        } else {
            System.out.println("La duración debe ser un valor positivo.");
        }
    }
    
  2. Manejo de Errores: En el método calculaMedia, podrías agregar una verificación para evitar la división por cero, en caso de que totalDelasEvaluaciones sea cero.

    public double calculaMedia() {
        if (totalDelasEvaluaciones == 0) {
            return 0; // O podrías lanzar una excepción o mostrar un mensaje de error
        }
        return sumaDeLasEvaluaciones / totalDelasEvaluaciones;
    }
    

Estas mejoras no solo ayudan a proteger los datos, sino que también hacen que tu programa sea más robusto y menos propenso a errores.

Espero que estas sugerencias te sean útiles y sigas disfrutando del aprendizaje de Java y la orientación a objetos. ¡Espero haber ayudado y buenos estudios!