Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Aplicando Orientación de Objetos

Este es mi desarrollo del desafío, espero comentarios y sugerencia

public class Pelicula {

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

    void muestraFichaTecnica(){
    System.out.println("El nombre de la pelicula es: " + nombre);
    System.out.println("Su fecha de lanzamiento es: " + fechaDeLanzamiento);
    System.out.println("Duración en minutos: " + duracionEnMinutos + "min");
    System.out.println("Incluido en el Plan: " + (incluidoEnElPlan ? "Sí" : "No"));
}
boolean isIncluidoEnElPlan() {
    return incluidoEnElPlan;
}
void setIncluidoEnElPlan(boolean incluidoEnElPlan) {
    this.incluidoEnElPlan = incluidoEnElPlan;
}

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

double calculaMedia(){
    return sumaDeLasEvaluaciones / totalDeLasEvaluaciones;
    }
    

}

public class Principal {

public static void main(String[] args) {
    Pelicula miPelicula = new Pelicula();
    miPelicula.nombre = "Avatar";
    miPelicula.fechaDeLanzamiento = 2009;
    miPelicula.duracionEnMinutos = 170;
    miPelicula.setIncluidoEnElPlan(true);
    
    miPelicula.muestraFichaTecnica();
    miPelicula.evalua(9);
    miPelicula.evalua(10);
    miPelicula.evalua( 8);

    System.out.println(miPelicula.sumaDeLasEvaluaciones);
    System.out.println(miPelicula.totalDeLasEvaluaciones);
    System.out.println(miPelicula.calculaMedia());

    Pelicula otraPelicula = new Pelicula();
    otraPelicula.nombre = "Oviblion";
    otraPelicula.fechaDeLanzamiento = 2013;
    otraPelicula.duracionEnMinutos = 130;
    otraPelicula.setIncluidoEnElPlan(false);

    otraPelicula.muestraFichaTecnica();
    otraPelicula.evalua(10);
    otraPelicula.evalua(10);
    otraPelicula.evalua(7);

    System.out.println(otraPelicula.sumaDeLasEvaluaciones);
    System.out.println(otraPelicula.totalDeLasEvaluaciones);
    System.out.println(otraPelicula.calculaMedia());
}

}

2 respuestas

¡Hola Estudiante, espero que estés bien!

Gracias por compartir tu desarrollo. Has hecho un buen trabajo implementando los conceptos de orientación a objetos en Java. Aquí te dejo algunos comentarios y sugerencias que podrían ayudarte a mejorar tu código:

  1. Encapsulamiento: Actualmente, los atributos de la clase Pelicula son públicos. Sería una buena práctica hacerlos privados y proporcionar métodos get y set para acceder y modificar estos atributos. Esto asegura que los datos sean manipulados de manera controlada.

    private String nombre;
    private int fechaDeLanzamiento;
    private int duracionEnMinutos;
    private boolean incluidoEnElPlan;
    private double sumaDeLasEvaluaciones;
    private int totalDeLasEvaluaciones;
    
    public String getNombre() {
        return nombre;
    }
    
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
    // Continúa con los demás atributos de manera similar...
    
  2. Validación de Datos: Al establecer valores para los atributos, podrías considerar agregar validaciones. Por ejemplo, asegurarte de que la duración de la película no sea negativa o que la fecha de lanzamiento sea un año válido.

  3. Constructor: Puedes crear un constructor para inicializar los atributos de la clase Pelicula al momento de crear un objeto. Esto hace que el código sea más limpio y más fácil de leer.

    public Pelicula(String nombre, int fechaDeLanzamiento, int duracionEnMinutos, boolean incluidoEnElPlan) {
        this.nombre = nombre;
        this.fechaDeLanzamiento = fechaDeLanzamiento;
        this.duracionEnMinutos = duracionEnMinutos;
        this.incluidoEnElPlan = incluidoEnElPlan;
        this.sumaDeLasEvaluaciones = 0;
        this.totalDeLasEvaluaciones = 0;
    }
    

    Luego, puedes crear objetos Pelicula de esta manera:

    Pelicula miPelicula = new Pelicula("Avatar", 2009, 170, true);
    
  4. Correcciones Menores: Noté que hay un pequeño error tipográfico en el nombre de la película "Oviblion". Supongo que quisiste escribir "Oblivion".

Implementando estos cambios, tu código será más robusto y alineado con las mejores prácticas de programación orientada a objetos. Espero que estas sugerencias te sean útiles.

¡Espero haber ayudado y buenos estudios!

Brenda, Muchas gracias por los comentarios y correcciones, comprendí muy bien lo de encapsular la clase Película, además entendí como validar los datos y crear constructores. No me percate del error ortográfico, me falto revisar detenidamente todo el desarrollo.