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

Desafio

Pelicula

public class Pelicula {
    private String nombre;
    private int fechaLanzamiento;
    private int duracionEnMinutos;
    private boolean incluidoEnElPlan;
    private double sumaDeLasEvaluaciones;
    private int totalDeLasEvaluaciones;

    public int getTotalDeLasEvaluaciones() {
        return totalDeLasEvaluaciones;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getFechaLanzamiento() {
        return fechaLanzamiento;
    }

    public void setFechaLanzamiento(int fechaLanzamiento) {
        this.fechaLanzamiento = fechaLanzamiento;
    }

    public int getDuracionEnMinutos() {
        return duracionEnMinutos;
    }

    public void setDuracionEnMinutos(int duracionEnMinutos) {
        this.duracionEnMinutos = duracionEnMinutos;
    }

    public boolean isIncluidoEnElPlan() {
        return incluidoEnElPlan;
    }

    public void setIncluidoEnElPlan(boolean incluidoEnElPlan) {
        this.incluidoEnElPlan = incluidoEnElPlan;
    }

    public void muestraFichaTecnica(){
        System.out.println("El nombre de la pelicula es: " + nombre);
        System.out.println("La fecha de lanzamiento es: " + fechaLanzamiento);
        System.out.println("Duracion en minutos: " + duracionEnMinutos);
    }

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

    public double mediaEvaluaciones (){
        return (sumaDeLasEvaluaciones / totalDeLasEvaluaciones);
    }
}

Principal

public class Principal {
    public static void main(String[] args) {

        Pelicula miPelicula = new Pelicula();
        miPelicula.setNombre("Encanto");
        miPelicula.setDuracionEnMinutos(120);
        miPelicula.setFechaLanzamiento(2020);
        miPelicula.setIncluidoEnElPlan(true);

        miPelicula.muestraFichaTecnica();
        miPelicula.evalua(10);
        miPelicula.evalua(10);
        System.out.println(miPelicula.getTotalDeLasEvaluaciones());
        System.out.println(miPelicula.mediaEvaluaciones());

        Pelicula otraPelicula = new Pelicula();
        otraPelicula.setNombre("Thor");
        otraPelicula.setDuracionEnMinutos(150);
        otraPelicula.setFechaLanzamiento(2019);

        otraPelicula.muestraFichaTecnica();
        otraPelicula.evalua(7.5);
        System.out.println(otraPelicula.getTotalDeLasEvaluaciones());
        System.out.println(otraPelicula.mediaEvaluaciones());
    }
}
1 respuesta

Hola Bianca, espero que estés bien

¡Espero que estés bien! Veo que estás trabajando en la encapsulación de tu clase Pelicula. Ya has hecho un gran trabajo al encapsular los atributos de la clase utilizando modificadores de acceso private y proporcionando métodos get y set para acceder y modificar estos atributos. Esto es una buena práctica en programación orientada a objetos, ya que ayuda a proteger los datos y mantener la integridad del objeto.

Aquí hay algunas sugerencias adicionales para mejorar tu código:

  1. Validación de datos: Puedes agregar validaciones en los métodos set para asegurarte de que los valores asignados a los atributos sean válidos. Por ejemplo, podrías verificar que la duración de la película sea positiva o que la fecha de lanzamiento sea un año razonable.

    public void setDuracionEnMinutos(int duracionEnMinutos) {
        if (duracionEnMinutos > 0) {
            this.duracionEnMinutos = duracionEnMinutos;
        } else {
            System.out.println("La duración debe ser positiva.");
        }
    }
    
  2. Constructor: Considera la posibilidad de añadir un constructor que inicialice los atributos principales de la película al crear un nuevo objeto. Esto puede hacer que tu código sea más limpio y fácil de leer.

    public Pelicula(String nombre, int fechaLanzamiento, int duracionEnMinutos, boolean incluidoEnElPlan) {
        this.nombre = nombre;
        this.fechaLanzamiento = fechaLanzamiento;
        this.duracionEnMinutos = duracionEnMinutos;
        this.incluidoEnElPlan = incluidoEnElPlan;
    }
    

    Y luego podrías crear una película así:

    Pelicula miPelicula = new Pelicula("Encanto", 2020, 120, true);
    
  3. Uso de this: Aunque no es estrictamente necesario, el uso de this para referirse a los atributos de la clase puede hacer que tu código sea más claro, especialmente cuando los nombres de los parámetros son los mismos que los nombres de los atributos.

Espero que estas sugerencias te sean útiles mientras continúas trabajando en tu proyecto. ¡Sigue adelante con el buen trabajo!

Espero haber ayudado y buenos estudios!