package br.com.alura.screenmatch.modelos;
public class Titulo implements Comparable<Titulo>{
private String nome;
private int anoDeLancamento;
private boolean incluindoNoPlano;
private double somaDasAvaliacoes;
private int totalAvaliacoes;
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 isIncluindoNoPlano() {
return incluindoNoPlano;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public int getTotalAvaliacoes(){
return totalAvaliacoes;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setIncluindoNoPlano(boolean incluindoNoPlano) {
this.incluindoNoPlano = incluindoNoPlano;
}
public void setAnoDeLancamento(int anoDeLancamento) {
this.anoDeLancamento = anoDeLancamento;
}
public void setDuracaoEmMinutos(int duracaoEmMinutos) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
public void exibeFichaTecnica(){
System.out.println("Nome do filme: " + nome);
System.out.println("Ano de lançamento: " + anoDeLancamento);
}
public void avalia(double nota){
somaDasAvaliacoes += nota;
totalAvaliacoes++;
}
public double obterMedia(){
return somaDasAvaliacoes / totalAvaliacoes;
}
@Override
public int compareTo(Titulo outroTitulo) {
return this.getNome().compareTo(outroTitulo.getNome());
}
}
package br.com.alura.screenmatch.principal;
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("O poderoso chefão", 1970);
meuFilme.avalia(9);
Filme outroFilme = new Filme("Avatar", 2023);
outroFilme.avalia(6);
var filmeDoPaulo = new Filme("Dogville", 2003);
//O codigo diz: Pode confiar que oque vem aí na frente é filme, chegou lá, não era oque prometi
filmeDoPaulo.avalia(10);
Serie lost = new Serie("Lost", 2000);
//variável referência = É oque a gente usa para chegar até um objeto, Objeto é quando damos "New".
Filme f1 = filmeDoPaulo;
List<Titulo> lista = new LinkedList<>();
lista.add(filmeDoPaulo);
lista.add(meuFilme);
lista.add(outroFilme);
lista.add(lost);
for (Titulo item: lista){
System.out.println(item.getNome());
if (item instanceof Filme filme && filme.getClassificacao() > 2){
System.out.println("Classificação: " + filme.getClassificacao());
}
}
ArrayList<String> buscaPorArtistas = new ArrayList<>();
buscaPorArtistas.add("Adam Sandler");
buscaPorArtistas.add("Kenvin Hart");
buscaPorArtistas.add("Ice Cube");
System.out.println(buscaPorArtistas);
//O Collections.sort() ordenou por ordem alfabética.
Collections.sort(buscaPorArtistas);
System.out.println("===========Depois da ordenação==========");
System.out.println(buscaPorArtistas);
System.out.println("==========Lista de titulos==========");
Collections.sort(lista);
System.out.println(lista);
lista.sort(Comparator.comparing(Titulo::getAnoDeLancamento));
System.out.println("============Ordenando por ano============");
System.out.println(lista);
}
}
package br.com.alura.screenmatch.modelos;
public class Serie extends Titulo {
private int temporadas;
private boolean ativa;
private int episodioPorTemporada;
private int minutosPorEpisodio;
public Serie(String nome, int anoDeLancamento) {
super(nome, anoDeLancamento);
}
/**gets e sets**/
@Override
public String toString() {
return "Série: " + this.getNome() + " (" + this.getAnoDeLancamento() + ")";
}