Titulo
package com.alura.screenmatch.modelos;
public class Titulo implements Comparable<Titulo>{
private String nombre;
private int fechaDeLanzamiento;
private boolean incluidoEnElPlan;
private double sumaDeLasEvaluaciones;
private int totalDeEvaluaciones;
private int duracionEnMinutos;
public Titulo(String nombre, int fechaDeLanzamiento) { this.nombre = nombre;
this.fechaDeLanzamiento = fechaDeLanzamiento;
}
public String getNombre() {
return nombre;
}
public int getFechaDeLanzamiento() {
return fechaDeLanzamiento;
}
public boolean isIncluidoEnElPlan() {
return incluidoEnElPlan;
}
public int getDuracionEnMinutos() {
return duracionEnMinutos;
}
public int getTotalDeEvaluaciones() {
return totalDeEvaluaciones;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setFechaDeLanzamiento(int fechaDeLanzamiento) {
this.fechaDeLanzamiento = fechaDeLanzamiento;
}
public void setIncluidoEnElPlan(boolean incluidoEnElPlan) {
this.incluidoEnElPlan = incluidoEnElPlan;
}
public void setDuracionEnMinutos(int duracionEnMinutos) {
this.duracionEnMinutos = duracionEnMinutos;
}
public void muestraFichaTecnica(){
System.out.println("Nombre de la película: " + nombre);
System.out.println("Año de lanzamiento: " + fechaDeLanzamiento);
}
public void evalua(double nota){
sumaDeLasEvaluaciones += nota;
totalDeEvaluaciones++;
}
public double calculaMediaEvaluaciones(){
return sumaDeLasEvaluaciones / totalDeEvaluaciones;
}
@Override
public int compareTo(Titulo otroTitulo) {
return this.getNombre().compareTo(otroTitulo.getNombre());
}
}
PrincipalConListas
package com.alura.screenmatch.Principal;
import com.alura.screenmatch.modelos.Pelicula;
import com.alura.screenmatch.modelos.Serie;
import com.alura.screenmatch.modelos.Titulo;
import java.util.*;
public class PrincipalConListas {
public static void main(String[] args) {
Pelicula miPelicula = new Pelicula("Encanto", 2021);
miPelicula.evalua(9);
Pelicula otraPelicula = new Pelicula("Avatar", 2023);
otraPelicula.evalua(6);
var peliculaDeBruno = new Pelicula("El señor de los anillos", 2001);
peliculaDeBruno.evalua(10);
Serie lost = new Serie("Lost", 2000);
List<Titulo> lista = new LinkedList<>();
lista.add(miPelicula);
lista.add(otraPelicula);
lista.add(peliculaDeBruno);
lista.add(lost);
for (Titulo item: lista){
System.out.println(item.getNombre());
if (item instanceof Pelicula pelicula && pelicula.getClasificacion() > 2){
System.out.println(pelicula.getClasificacion());
}
}
ArrayList<String> listaDeArtistas = new ArrayList<>();
listaDeArtistas.add("Penélope Cruz");
listaDeArtistas.add("Antonio Banderas");
listaDeArtistas.add("Ricardo Darin");
System.out.println(listaDeArtistas);
Collections.sort(listaDeArtistas);
System.out.println("Lista de artistas ordenada: " + listaDeArtistas);
Collections.sort(lista);
System.out.println("Lista de titulos ordenados: " + lista);
lista.sort(Comparator.comparing(Titulo::getFechaDeLanzamiento));
System.out.println("Lista ordenada por fecha: " + lista);
}
}
Serie
package com.alura.screenmatch.modelos;
public class Serie extends Titulo {
private int temporadas;
private boolean activa;
private int episodiosPorTemporada;
private int minutosPorEpisodio;
public Serie(String nombre, int fechaDeLanzamiento) {
super(nombre, fechaDeLanzamiento);
}
public int getTemporadas() {
return temporadas;
}
public void setTemporadas(int temporadas) {
this.temporadas = temporadas;
}
public boolean isActiva() {
return activa;
}
public void setActiva(boolean activa) {
this.activa = activa;
}
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;
}
@Override
public String toString() {
return "Serie: "+this.getNombre()+" ("+this.getFechaDeLanzamiento()+")";
}
}