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

practica encapsulamiento Pelicula

Mi código package aluraModel;

public class Peliculas {

private String nombre;

private int fechaDeLanzamiento;

private int duracionEnMinutos;

private boolean incluidoEnPlan;

private double sumaEvaluacion;

private int totalEvaluaciones;

//setter generado del nombre
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 setIncluidoEnPlan(boolean incluidoEnPlan) {
    this.incluidoEnPlan = incluidoEnPlan;
}

public int getTotalEvaluaciones(){
    return totalEvaluaciones;
}

public void mostrarFichaTecnica(){
    System.out.println("El nombre de la pelicula es:" + nombre);
    System.out.println("Lanzada en:" + fechaDeLanzamiento);
    System.out.println("Duración:" + duracionEnMinutos);
    System.out.println("Incluida en el plan:" + incluidoEnPlan);
            
}

public void evalua(double nota){
    //sumaEvaluacion = sumaEvaluacion + nota;   //forma valida tambien
    sumaEvaluacion += nota;

    totalEvaluaciones++;
}

public double calculaMedia(){
    return sumaEvaluacion / totalEvaluaciones;
}

}

1 respuesta

¡Hola Galileo, espero que estés bien!

Tu código para la clase Peliculas se ve bastante bien y ya estás aplicando el principio de encapsulamiento al usar modificadores de acceso private para los atributos y proporcionando métodos set y get para interactuar con ellos. Esto es fundamental para proteger los datos y asegurar que solo puedan ser modificados de manera controlada.

Aquí hay algunas sugerencias para mejorar aún más tu práctica de encapsulamiento:

  1. Validación en los Setters: Puedes agregar validaciones en tus métodos set para asegurar que los valores asignados a los atributos sean válidos. Por ejemplo, asegurarte de que la fechaDeLanzamiento sea un año positivo o que duracionEnMinutos no sea negativa.

    public void setFechaDeLanzamiento(int fechaDeLanzamiento) {
        if (fechaDeLanzamiento > 0) {
            this.fechaDeLanzamiento = fechaDeLanzamiento;
        } else {
            System.out.println("El año de lanzamiento debe ser positivo.");
        }
    }
    
    public void setDuracionEnMinutos(int duracionEnMinutos) {
        if (duracionEnMinutos > 0) {
            this.duracionEnMinutos = duracionEnMinutos;
        } else {
            System.out.println("La duración debe ser positiva.");
        }
    }
    
  2. Métodos get para todos los atributos: Aunque no siempre es necesario, podrías considerar agregar métodos get para todos los atributos, especialmente si en el futuro necesitas acceder a ellos desde fuera de la clase.

  3. Consistencia en los nombres: Asegúrate de que los nombres de los métodos y atributos sean consistentes y claros. Esto facilita la lectura y el mantenimiento del código.

  4. Documentación: Considera agregar comentarios o documentación a tus métodos para describir qué hacen y cómo deben ser usados. Esto es útil para otros desarrolladores (o para ti mismo en el futuro).

Tu implementación de los métodos evalua y calculaMedia también está bien encapsulada, ya que manejan internamente la lógica de evaluación y cálculo de la media, sin exponer innecesariamente los detalles de implementación.

Espero que estas sugerencias te sean útiles y te ayuden a mejorar tu comprensión y aplicación del encapsulamiento en Java. ¡Sigue adelante con tus estudios!

Espero haber ayudado y buenos estudios!