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

Titulo.java

package com.aluracursos.screenmatch.modelos;

public class Titulo {

    private String nombre;
    private int fechaDeLanzamiento;
    private int duracionEnMinutos;
    private boolean incluidoEnElPlan;
    private double sumaDeEvaluaciones;
    private int totalDeEvaluaciones;

    // ✅ Constructor obligatorio
    public Titulo(String nombre, int fechaDeLanzamiento) {
        this.nombre = nombre;
        this.fechaDeLanzamiento = fechaDeLanzamiento;
    }

    public String getNombre() {
        return nombre;
    }

    public int getFechaDeLanzamiento() {
        return 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("Nombre: " + nombre);
        System.out.println("Fecha de lanzamiento: " + fechaDeLanzamiento);
    }

    public void evalua(double nota) {
        sumaDeEvaluaciones += nota;
        totalDeEvaluaciones++;
    }

    public double calculaMedia() {
        return sumaDeEvaluaciones / totalDeEvaluaciones;
    }

    public int getTotalDelasEvaluaciones() {
        return totalDeEvaluaciones;
    }

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

Serie.java

package com.aluracursos.screenmatch.modelos;

public class Serie extends Titulo {

    private int temporadas;
    private int episodiosPorTemporada;
    private int minutosPorEpisodio;

    // ✅ Constructor llamando al padre
    public Serie(String nombre, int fechaDeLanzamiento) {
        super(nombre, fechaDeLanzamiento);
    }

    public int getTemporadas() {
        return temporadas;
    }

    public void setTemporadas(int temporadas) {
        this.temporadas = temporadas;
    }

    public int getEpisodiosPorTemporada() {
        return episodiosPorTemporada;
    }

    public void setEpisodiosPorTemporada(int episodiosPorTemporada) {
        this.episodiosPorTemporada = episodiosPorTemporada;
    }

    public int getMinutosPorEpisodio() {
        return minutosPorEpisodio;
    }

    public void setMinutosPorEpisodio(int minutosPorEpisodio) {
        this.minutosPorEpisodio = minutosPorEpisodio;
    }

    @Override
    public int getDuracionEnMinutos() {
        return temporadas * episodiosPorTemporada * minutosPorEpisodio;
    }
}

Pelicula.java

package com.aluracursos.screenmatch.modelos;

import com.aluracursos.screenmatch.calculos.Clasificacion;

public class Pelicula extends Titulo implements Clasificacion {

    private String director;

    // ✅ Constructor llamando al padre
    public Pelicula(String nombre, int fechaDeLanzamiento) {
        super(nombre, fechaDeLanzamiento);
    }

    public String getDirector() {
        return director;
    }

    public void setDirector(String director) {
        this.director = director;
    }

    @Override
    public int getClasificacion() {
        return (int) (calculaMedia() / 2);
    }

    @Override
    public String toString() {
        return "Pelicula: " + getNombre() +
                " (" + getFechaDeLanzamiento() + ")";
    }
}

Principal.java

import com.aluracursos.screenmatch.calculos.CalculadoraDeTiempo;
import com.aluracursos.screenmatch.calculos.FiltroRecomendacion;
import com.aluracursos.screenmatch.modelos.*;

import java.util.ArrayList;

public class Principal {

    public static void main(String[] args) {

        Pelicula miPelicula = new Pelicula("Encanto", 2021);
        miPelicula.setDuracionEnMinutos(120);
        miPelicula.setIncluidoEnElPlan(true);
        miPelicula.evalua(10);
        miPelicula.evalua(8);

        Serie casaDragon = new Serie("La casa del dragón", 2022);
        casaDragon.setTemporadas(1);
        casaDragon.setEpisodiosPorTemporada(10);
        casaDragon.setMinutosPorEpisodio(50);

        CalculadoraDeTiempo calculadora = new CalculadoraDeTiempo();
        calculadora.incluye(miPelicula);
        calculadora.incluye(casaDragon);

        System.out.println("Tiempo total: " + calculadora.getTiempoTotal());

        ArrayList<Pelicula> listaDePeliculas = new ArrayList<>();
        listaDePeliculas.add(miPelicula);
        listaDePeliculas.add(new Pelicula("El Señor de los Anillos", 2001));

        System.out.println(listaDePeliculas);
    }
}
1 respuesta

¡Hola Estudiante, espero que estés bien!

Parece que ya has implementado correctamente los constructores en tus clases Titulo, Serie y Pelicula siguiendo las instrucciones de la actividad. Has utilizado la palabra clave super para llamar al constructor de la clase padre, lo cual es exactamente lo que se requería.

En tu clase Principal, también estás instanciando los objetos Pelicula y Serie correctamente, pasando el nombre y la fecha de lanzamiento como argumentos al constructor. Aquí tienes un ejemplo de cómo lo has hecho:

Pelicula miPelicula = new Pelicula("Encanto", 2021);
Serie casaDragon = new Serie("La casa del dragón", 2022);

Todo parece estar en orden con respecto a la declaración y uso de los constructores. Si estás experimentando algún error específico, asegúrate de que todos los archivos estén guardados y que no haya errores tipográficos en los nombres de los paquetes o clases. También verifica que todas las importaciones necesarias estén presentes en la clase Principal.

Espero que esto te ayude a avanzar en tu proyecto. ¡Bons estudios!