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