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

Datos encapsulados

package com.alura.screenmatch;

public class pelicula {

private String nombre;
private int fechaDeLanzamiento;
private int duracionEnMinutos;
private boolean incluidoEnElPlan;
 double sumaDeLasEvaluaciones;
 int totalDeLasEvaluaciones;

public String getNombre() {
    return nombre;
}

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

public int getFechaDeLanzamiento() {
    return fechaDeLanzamiento;
}

public void setFechaDeLanzamiento(int fechaDeLanzamiento) {
    this.fechaDeLanzamiento = fechaDeLanzamiento;
}

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("==================================");
    System.out.println("         FICHA TÉCNICA");
    System.out.println("==================================");
    System.out.println("  Nombre: " + nombre);
    System.out.println(" Fecha de lanzamiento: " + fechaDeLanzamiento);
    System.out.println(" Duración: " + duracionEnMinutos + " minutos");
    System.out.println(" Incluida en el plan: " + (incluidoEnElPlan ? "Sí" : "No"));
    System.out.println("==================================\n");
}

public void evalua(double nota) {
    sumaDeLasEvaluaciones += nota;
    totalDeLasEvaluaciones++;
    System.out.println(" Se registró una nueva evaluación.");
    System.out.println(" Suma total de evaluaciones: " + sumaDeLasEvaluaciones);
    System.out.println(" Cantidad de evaluaciones: " + totalDeLasEvaluaciones + "\n");
}

public double calculaMedia() {
    double result = sumaDeLasEvaluaciones / totalDeLasEvaluaciones;
    System.out.println(" Calculando promedio de evaluaciones...");
    System.out.println(" Promedio: " + String.format("%.2f", result) + "\n");
    return result;
}

}

import com.alura.screenmatch.pelicula;

public class Main {
    public static void main(String[] args) {
        // ==============================
        // Película 1: Matrix recargado
        // ==============================
        pelicula p1 = new pelicula();
        p1.setNombre("Encanto");
        p1.setFechaDeLanzamiento(2003);
        p1.setDuracionEnMinutos(120);
        p1.setIncluidoEnElPlan(true);

        p1.muestraFichaTecnica();
        p1.evalua(10);
        p1.evalua(20);
        p1.evalua(30);
        p1.calculaMedia();

        // ==============================
        //  Película 2: Matrix
        // ==============================
        pelicula p2 = new pelicula();
        p2.setNombre("Matrix");
        p2.setFechaDeLanzamiento(1999);
        p2.setDuracionEnMinutos(180);
        p2.setIncluidoEnElPlan(false);

        p2.muestraFichaTecnica();
        p2.evalua(10);
        p2.calculaMedia();
    }
}
1 respuesta

Hola Maria, espero que estés bien

Parece que estás en el camino correcto al encapsular los atributos de tu clase pelicula utilizando modificadores de acceso private y proporcionando métodos get y set para acceder y modificar estos atributos. Sin embargo, hay un par de detalles que podrías considerar para mejorar el encapsulamiento y la organización del código:

  1. Nombre de la Clase: En Java, es una convención que los nombres de las clases comiencen con una letra mayúscula. Así que sería mejor cambiar pelicula a Pelicula.

  2. Encapsulamiento Completo: Has encapsulado la mayoría de los atributos, pero sumaDeLasEvaluaciones y totalDeLasEvaluaciones aún son accesibles directamente. Considera hacerlos privados y, si es necesario, proporciona métodos get para ellos, o simplemente mantenlos como privados si no necesitas acceso directo desde fuera de la clase.

  3. Validación en Métodos Set: Puedes agregar validaciones en los métodos set para asegurar que los datos asignados a los atributos sean válidos. Por ejemplo, podrías verificar que fechaDeLanzamiento y duracionEnMinutos sean valores positivos.

Espero que estas sugerencias te sean útiles para mejorar el encapsulamiento en tu proyecto. ¡Espero haber ayudado y buenos estudios!