// Principal
import br.com.alura.screematch.calculos.CalculadoraDeTempo;
import br.com.alura.screematch.calculos.FiltroRecomendacao;
import br.com.alura.screenmatch.modelos.Episodio;
import br.com.alura.screenmatch.modelos.Filme;
import br.com.alura.screenmatch.modelos.Serie;
import java.util.ArrayList;
public class Principal {
public static void main(String[] args) {
Filme meufilme = new Filme("Sempre ao seu lado",2009);
meufilme.setDuracaoEmMinutos(93);
meufilme.setIncluidoNoPlano(true);
System.out.println("Duração do Filme: " + meufilme.getDuracaoEmMinutos());
meufilme.exibeFichaTecnica();
meufilme.avalia(9);
meufilme.avalia(8);
meufilme.avalia(10);
System.out.println("Média de avaliações: " + meufilme);
System.out.println(meufilme.pegaMedia());
Serie cobra= new Serie("Cobra Kai", 2018);
cobra.exibeFichaTecnica();
cobra.setTemporadas(6);
cobra.setEpisodiosPorTemporada(10);
cobra.setMinutosPorEpisodio(60);
System.out.println("Duração para maratonar Cobra Kai: " + cobra.getDuracaoEmMinutos());
Filme outrofilme = new Filme("Avatar", 2023);
outrofilme.setDuracaoEmMinutos(200);
outrofilme.setIncluidoNoPlano(true);
System.out.println("Duração do Filme: " + meufilme.getDuracaoEmMinutos());
CalculadoraDeTempo calculadora = new CalculadoraDeTempo();
calculadora.inclui(meufilme);
calculadora.inclui(outrofilme);
calculadora.inclui(cobra);
System.out.println(calculadora.getTempoTotal());
FiltroRecomendacao filtro = new FiltroRecomendacao();
filtro.filtra(meufilme);
Episodio episodio = new Episodio();
episodio.setNumero(1);
episodio.setSerie(cobra);
episodio.setTotalVisualizacoes(300);
filtro.filtra(episodio);
var filmeDoSamil = new Filme("Hook,o retorno do Capitão Gancho", 136);
filmeDoSamil.setDuracaoEmMinutos(136);
filmeDoSamil.avalia(10);
ArrayList<Filme> listaDeFilmes = new ArrayList<>();
listaDeFilmes.add(filmeDoSamil);
listaDeFilmes.add(meufilme);
listaDeFilmes.add(outrofilme);
System.out.println("Tamanho da lista: " + listaDeFilmes.size());
System.out.println("Primeiro filme: " + listaDeFilmes.get(0).getNome());
System.out.println(listaDeFilmes);
System.out.println("toString do filme: " + listaDeFilmes.get(0).toString());
}
}
// Filme
package br.com.alura.screenmatch.modelos;
import br.com.alura.screematch.calculos.Clasificacao;
public class Filme extends Titulo implements Clasificacao {
private String diretor;
public Filme(String nome, int anoDeLancamento) {
super(nome, anoDeLancamento);
}
public String getDiretor(String diretor) {
return diretor;
}
public void setDiretor(String diretor){
this. diretor = diretor;
}
@Override
public int getClasificacao() {
return (int) pegaMedia() / 2;
}
@Override
public String toString() {
return "Filme: " + this.getNome() + "(" + this.getAnoDeLancamento() + ")";
}
}
// Serie
package br.com.alura.screenmatch.modelos;
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;
}
}