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

11 Haga lo que hicimos en aula: encapsulando el proyecto

La clase película:

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("El 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;
    }
}

La clase principal:

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());


    }
}
1 respuesta

Hola Mary, espero que estés bien

¡Gracias por compartir tu código! Veo que ya has implementado el encapsulamiento en tu clase Pelicula al utilizar modificadores de acceso private para los atributos y métodos get y set para acceder y modificar estos atributos. Esto es exactamente lo que se busca con el concepto de encapsulamiento: proteger los datos internos de la clase y proporcionar un acceso controlado a ellos.

Aquí hay algunas sugerencias para asegurarte de que tu clase esté bien encapsulada:

  1. Validación de Datos: Puedes agregar validaciones en los métodos set para asegurarte de que los datos sean válidos antes de asignarlos a los atributos. Por ejemplo, podrías verificar que la duración de la película sea un número positivo.

    public void setDuracionEnMinutos(int duracionEnMinutos) {
        if (duracionEnMinutos > 0) {
            this.duracionEnMinutos = duracionEnMinutos;
        } else {
            System.out.println("Duración inválida.");
        }
    }
    
  2. Métodos adicionales: Considera si necesitas más métodos para manipular los datos de tu clase. Por ejemplo, podrías querer un método para restablecer las evaluaciones.

  3. Uso de toString: Implementar el método toString puede ser útil para imprimir la información de la película de manera más estructurada.

    @Override
    public String toString() {
        return "Pelicula{" +
                "nombre='" + nombre + '\'' +
                ", fechaDeLanzamiento=" + fechaDeLanzamiento +
                ", duracionEnMinutos=" + duracionEnMinutos +
                ", incluidoEnElPlan=" + incluidoEnElPlan +
                '}';
    }
    

Tu implementación ya está bastante bien encaminada. Estas sugerencias son solo para mejorar aún más la robustez y la legibilidad de tu código. Espero que esto te ayude a avanzar con tu proyecto.

¡Espero haber ayudado y buenos estudios!