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

Encapsulando el proyecto

package com.aluracursos.screenmatch.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("\nEl nombre de la pelicula es: " + nombre);
        System.out.println("Su fecha de lanzamiento es: " + fechaDeLanzamiento);
        System.out.println("Duracion en minutos: " + duracionEnMinutos);
    }

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

    public double calculaMedia(){
        return sumaDeLasEvaluaciones/totalDeLasEvaluaciones;
    }
}
import com.aluracursos.screenmatch.modelos.Pelicula;

public class Principal {

    public static void main(String[] args) {
      Pelicula miPelicula = new Pelicula();
      miPelicula.setNombre("Dos buenos tipos");
      miPelicula.setFechaDeLanzamiento(2016);
      miPelicula.setDuracionEnMinutos(110);
      miPelicula.setIncluidoEnElPlan(true);

//    Para mostrar datos completos con ficha tecnica
      miPelicula.muestraFichatecnica();

      miPelicula.evalua(10);
      miPelicula.evalua(10);
      miPelicula.evalua(7.8);
      System.out.println(miPelicula.calculaMedia());

      System.out.println("\n*********************");

//      Por si se requiere obtener solo algunos datos con getters
      System.out.println(miPelicula.getTotalDeLasEvaluaciones());
      System.out.println(miPelicula.getNombre());
      System.out.println(miPelicula.getFechaDeLanzamiento());
      System.out.println(miPelicula.getDuracionEnMinutos());

    }
}
1 respuesta

Hola Mario, espero que estés bien

¡Espero que estés bien! Veo que ya has hecho un buen trabajo aplicando el concepto de encapsulamiento en tu clase Pelicula. Has protegido los atributos de tu clase haciéndolos privados y has proporcionado métodos públicos para acceder y modificar estos atributos, lo cual es una práctica excelente en la programación orientada a objetos.

Para asegurarte de que estás cumpliendo con el ejercicio de encapsulamiento, verifica lo siguiente:

  1. Atributos privados: Todos los atributos de la clase Pelicula deben ser privados, lo cual ya has hecho.

  2. Métodos públicos de acceso (getters y setters): Has creado métodos públicos para acceder y modificar los atributos privados. Esto permite controlar cómo se accede y se modifica el estado del objeto desde fuera de la clase.

  3. Métodos adicionales: Has implementado métodos como muestraFichatecnica, evalua, y calculaMedia que interactúan con los atributos de manera controlada.

Un pequeño consejo sería asegurarte de manejar posibles divisiones por cero en el método calculaMedia. Puedes hacerlo verificando si totalDeLasEvaluaciones es mayor que cero antes de realizar la división. Aquí tienes un ejemplo de cómo podrías modificar ese método:

public double calculaMedia() {
    if (totalDeLasEvaluaciones > 0) {
        return sumaDeLasEvaluaciones / totalDeLasEvaluaciones;
    } else {
        return 0; // o algún valor que consideres apropiado
    }
}

Esto evitará errores si intentas calcular la media antes de haber realizado alguna evaluación.

Espero que esta información te sea útil y te ayude a seguir avanzando en tu proyecto. ¡Bons estudios!