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

//Importando los recursos de Pelicula. 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);

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

}

package com.aluracursos.screenmatch.modelos;

public class Pelicula { //Atributos private String nombre; private int fechaDeLanzamiento; private int duracionEnMinutos; private boolean incluidoEnElPlan; //No permitir al usuario ciertas acciones. 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;
}
//Metodo. Obtener
public int getTotalDelasEvaluaciones(){
    return totalDelasEvaluaciones;
}

//Metodo:  Generando Setter=Para colocar Datos.
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;
}

//Metodo
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);
}
//Metodo que espera un parametro
public void evalua(double nota){
    sumaDeLasEvaluaciones += nota;
    totalDelasEvaluaciones++;
}
//Metodo que espera retorno
public double calculaMedia(){
    return sumaDeLasEvaluaciones / totalDelasEvaluaciones;
}

}

1 respuesta

Hola Wilder, espero que estés bien

Veo que estás trabajando en un proyecto donde aplicas el concepto de encapsulamiento en Java. Por lo que compartiste, ya has encapsulado correctamente los atributos de la clase Pelicula usando modificadores de acceso private y proporcionando métodos get y set para acceder y modificar estos atributos. Esto es una buena práctica para proteger los datos y controlar cómo se acceden y modifican.

Aquí hay algunas sugerencias para asegurarte de que estás aplicando el encapsulamiento de manera efectiva:

  1. Validación en Setters: Puedes agregar lógica de validación en los métodos set para asegurarte de que los valores que se establecen sean válidos. Por ejemplo, podrías verificar que la fechaDeLanzamiento no sea un año futuro o que duracionEnMinutos sea un número positivo.

  2. Métodos de Acceso Controlados: Asegúrate de que los métodos de acceso (get y set) solo se proporcionen cuando realmente sean necesarios. Si un atributo no necesita ser modificado desde fuera de la clase, no incluyas un setter para él.

  3. Consistencia de Datos: Como ya estás haciendo con los métodos evalua y calculaMedia, puedes mantener la consistencia de los datos calculando valores derivados dentro de la clase en lugar de permitir que se calculen externamente.

  4. Documentación: Aunque no es parte del código en sí, documentar tus métodos con comentarios puede ayudar a otros (y a ti mismo en el futuro) a entender el propósito de cada método y cómo se espera que se utilice.

Con estas prácticas, te asegurarás de que tu proyecto esté bien encapsulado y sea más robusto y mantenible.

Espero haber ayudado y buenos estudios!