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

ENCANSULANDO EL PROYECTO

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;
}

}

import com.aluracursos.screenmatch.modelos; public class Principal { public static void main(String[] args) { Pelicula miPelicula = new Pelicula(); miPelicula.setNombre("La familia del futuro"); miPelicula.setFechaDeLanzamiento(2007); miPelicula.setDuracionEnMinutos(95); miPelicula.setIncluidoEnElPlan(true);

   miPelicula.muestraFichaTecnica();
    miPelicula.evalua(10);
    miPelicula.evalua(10);
    miPelicula.evalua(7.8);
   System.out.println("Média de evaluaciones de la película: " +miPelicula.calculaMedia());

} }

1 respuesta

Hola Yolima, espero que estés bien

¡Espero que estés bien! Me alegra ver que estás trabajando en el encapsulamiento de tu proyecto. Por lo que veo, ya has hecho un buen trabajo encapsulando los atributos de tu clase Pelicula al hacerlos privados y proporcionando métodos públicos para acceder y modificar esos atributos. Esto es una parte esencial del encapsulamiento, ya que ayuda a proteger los datos y a mantener el control sobre cómo se accede a ellos.

Una cosa que podrías considerar para mejorar aún más el encapsulamiento es verificar los valores que se asignan a los atributos a través de los métodos set.

Por ejemplo, podrías asegurarte de que la duración de la película no sea negativa o que la fecha de lanzamiento tenga sentido. Aquí te dejo un ejemplo de cómo podrías hacerlo:

public void setDuracionEnMinutos(int duracionEnMinutos) {
    if (duracionEnMinutos > 0) {
        this.duracionEnMinutos = duracionEnMinutos;
    } else {
        System.out.println("La duración debe ser un valor positivo.");
    }
}

public void setFechaDeLanzamiento(int fechaDeLanzamiento) {
    if (fechaDeLanzamiento > 1800) { // Suponiendo que no hay películas antes de 1800
        this.fechaDeLanzamiento = fechaDeLanzamiento;
    } else {
        System.out.println("La fecha de lanzamiento no es válida.");
    }
}

Con estas verificaciones, te aseguras de que los datos de tu objeto Pelicula sean siempre válidos y consistentes.

Espero que estos consejos te sean útiles en tu proyecto. ¡Bons estudios!