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

Haga lo que hicimos en aula: declarando constructores

modelos/Titulo.java

package modelos;

public class Titulo {
    private String nombre;
    private int fechaDeLanzamiento;
    private int duracionEnMinutos; 
    private double sumaDeLasEvaluaciones;
    private int totalDeEvaluaciones;

    // Constructor solicitado
    public Titulo(String nombre, int fechaDeLanzamiento) {
        // Usamos 'this' para asignar los parámetros a los atributos de la clase
        this.nombre = nombre;
        this.fechaDeLanzamiento = fechaDeLanzamiento;
    }
    
    // Métodos Getters y Setters (Omitidos por brevedad, pero necesarios para el código completo)
    public String getNombre() { return nombre; }
    public int getFechaDeLanzamiento() { return fechaDeLanzamiento; }
    public int getDuracionEnMinutos() { return duracionEnMinutos; }
    public void setDuracionEnMinutos(int duracionEnMinutos) { this.duracionEnMinutos = duracionEnMinutos; }

    // Otros métodos (como muestraFichaTecnica, evalua, etc. si existen)
}

modelos/Serie.java

package modelos;

public class Serie extends Titulo {
    private int temporadas;
    private int episodiosPorTemporada;
    private int minutosPorEpisodio;

    // Constructor solicitado
    public Serie(String nombre, int fechaDeLanzamiento) {
        // Obligatorio: Llama al constructor de la clase Titulo
        super(nombre, fechaDeLanzamiento); 
    }
    
    // Métodos específicos de Serie (omito por brevedad)
    // ...
}

modelos/Pelicula.java

package modelos;

// Necesitas la interfaz Clasificable del ejercicio anterior
import com.aluracursos.screenmatch.calculos.Clasificable;

public class Pelicula extends Titulo implements Clasificable {
    private String director;

    // Constructor solicitado
    public Pelicula(String nombre, int fechaDeLanzamiento) {
        // Obligatorio: Llama al constructor de la clase Titulo
        super(nombre, fechaDeLanzamiento); 
    }
    
    // Implementación de Clasificable (del ejercicio anterior, simplificado)
    @Override
    public int getClasificacion() {
        // Esto solo es un ejemplo, necesitarías implementar calculaMedia() real
        return 4; 
    }

    // Getters y Setters específicos
    public String getDirector() { return director; }
    public void setDirector(String director) { this.director = director; }
}

principal/Principal.java

package principal;

import modelos.Pelicula;
import modelos.Serie;

public class Principal {
    public static void main(String[] args) {
        
        // CORRECCIÓN: Instanciando Pelicula y pasando nombre y fecha
        Pelicula favorita = new Pelicula("The Matrix", 1999);
        favorita.setDuracionEnMinutos(136); // Asignamos la duración con setter

        Pelicula otraPelicula = new Pelicula("Avatar", 2009);
        otraPelicula.setDuracionEnMinutos(162);
        
        // CORRECCIÓN: Instanciando Serie y pasando nombre y fecha
        Serie casaDragon = new Serie("La Casa del Dragón", 2022);
        casaDragon.setDuracionEnMinutos(50); // Duración de un episodio

        // Muestra de resultados (opcional)
        System.out.println("Película favorita: " + favorita.getNombre() + 
                           " (" + favorita.getFechaDeLanzamiento() + ")");
        System.out.println("Serie: " + casaDragon.getNombre() + 
                           " (" + casaDragon.getFechaDeLanzamiento() + ")");
    }
}
1 respuesta

Hola Mario, espero que estés bien

Parece que has hecho un gran trabajo implementando los constructores en tus clases Titulo, Serie y Pelicula, siguiendo el ejemplo de la clase. Has utilizado correctamente la palabra clave super para llamar al constructor de la clase madre Titulo desde las clases Serie y Pelicula. Además, has corregido los errores de compilación en la clase Principal al instanciar los objetos Pelicula y Serie con el nombre y la fecha de lanzamiento.

Tu código está bien estructurado y parece que has seguido las instrucciones de la actividad correctamente. Un detalle que podrías considerar es asegurarte de que todos los métodos necesarios, como los getters y setters, estén implementados en tus clases para que el código funcione sin problemas.

Aquí tienes un ejemplo de cómo podrías mostrar los resultados en la consola, que ya has incluido en tu clase Principal:

System.out.println("Película favorita: " + favorita.getNombre() + 
                   " (" + favorita.getFechaDeLanzamiento() + ")");
System.out.println("Serie: " + casaDragon.getNombre() + 
                   " (" + casaDragon.getFechaDeLanzamiento() + ")");

Esto debería darte una salida clara de los nombres y las fechas de lanzamiento de tus objetos Pelicula y Serie.

Espero que esto te ayude y que sigas disfrutando de tus estudios de Java. ¡Bons estudios!