// Titulo
public class Titulo implements Comparable<Titulo> {
private String nome;
private int anoDeLancamento;
private boolean incluidoNoPlano;
private double somaDasAvalacoes;
private int totalDeAvaliacoes;
private int duracaoEmMinutos;
public Titulo(String nome, int anoDeLancamento) {
this.nome = nome;
this.anoDeLancamento = anoDeLancamento;
}
public String getNome() {
return nome;
}
public int getAnoDeLancamento() {
return anoDeLancamento;
}
public boolean isIncluidoNoPlano() {
return incluidoNoPlano;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public int getTotalDeAvaliacoes() {
return totalDeAvaliacoes;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setAnoDeLancamento(int anoDeLancamento) {
this.anoDeLancamento = anoDeLancamento;
}
public void setDuracaoEmMinutos(int duracaoEmMinutos) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
public void setIncluidoNoPlano(boolean incluidoNoPlano) {
this.incluidoNoPlano = incluidoNoPlano;
}
public void exibeFichaTecnica(){
System.out.println("Nome do filme: " + nome);
System.out.println("Ano de lancamento: " + anoDeLancamento);
System.out.println("Duração em minutos:" + duracaoEmMinutos);
System.out.println("incluido no plano: " + incluidoNoPlano);
}
public void avalia(double nota){
somaDasAvalacoes += nota;
totalDeAvaliacoes++;
}
public double pegaMedia(){
return somaDasAvalacoes / totalDeAvaliacoes;
}
@Override
public int compareTo(Titulo outroTitulo) {
return this.getNome().compareTo(outroTitulo.getNome());
}
}
// PrincipalComListas
import br.com.alura.screenmatch.modelos.Filme;
import br.com.alura.screenmatch.modelos.Serie;
import br.com.alura.screenmatch.modelos.Titulo;
import java.util.*;
public class PrincipalComListas {
public static void main(String[] args) {
Filme meufilme = new Filme("Sempre ao seu lado", 2009);
meufilme.avalia(9);
Filme outrofilme = new Filme("Avatar", 2023);
outrofilme.avalia(7);
var filmeDoSamil = new Filme("Hook,o retorno do Capitão Gancho", 1991);
filmeDoSamil.avalia(10);
Serie cobra= new Serie("Cobra Kai", 2018);
List<Titulo> lista = new LinkedList<>();
lista.add(filmeDoSamil);
lista.add(meufilme);
lista.add(outrofilme);
lista.add(cobra);
for (Titulo item: lista) {
System.out.println(item.getNome());
if (item instanceof Filme filme && filme.getClasificacao() > 2) {
System.out.println("Clasificação " + filme.getClasificacao());
}
}
ArrayList<String> buscaPorArtista = new ArrayList<>();
buscaPorArtista.add("Robert Williams");
buscaPorArtista.add("Tom Cruise");
buscaPorArtista.add("Sandra Bullock");
Collections.sort(buscaPorArtista);
System.out.println("Depois da ordenação ");
System.out.println(buscaPorArtista);
System.out.println("Lista de titulos orednados: ");
Collections.sort(lista);
System.out.println(lista);
lista.sort(Comparator.comparing(Titulo::getAnoDeLancamento));
System.out.println("Ordenando por ano: ");
System.out.println(lista);
}
}
//Serie
public class Serie extends Titulo {
private int temporadas;
private boolean ativa;
private int episodiosPorTemporada;
private int minutosPorEpisodio;
public Serie(String nome, int anoDeLancamento) {
super(nome, anoDeLancamento);
}
public int getTemporadas() {
return temporadas;
}
public void setTemporadas(int temporadas) {
this.temporadas = temporadas;
}
public boolean isAtiva() {
return ativa;
}
public void setAtiva(boolean ativa) {
this.ativa = ativa;
}
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 getDuracaoEmMinutos() {
return temporadas * episodiosPorTemporada * minutosPorEpisodio;
}
@Override
public String toString() {
return "Serie: " + this.getNome() + "(" + this.getAnoDeLancamento() + ")";
}
}