Título
package br.com.alura.screenmatch.modelos;
public class Titulo {
private String nome;
private int anoLancamento;
private boolean inclusoPlano;
private double somaAvaliacoes;
private int totalAvaliacoes;
private int duracaoEmMinutos;
public String getNome() {
return nome;
}
public int getAnoLancamento() {
return anoLancamento;
}
public boolean isInclusoPlano() {
return inclusoPlano;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public int getTotalAvaliacoes() {
return totalAvaliacoes;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setAnoLancamento(int anoLancamento) {
this.anoLancamento = anoLancamento;
}
public void setInclusoPlano(boolean inclusoPlano) {
this.inclusoPlano = inclusoPlano;
}
public void setDuracaoEmMinutos(int duracaoEmMinutos) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
public void exibeFichaTecnica() {
System.out.println("Nome do Título: " + nome);
System.out.println("Ano de Lançamento: " + anoLancamento);
}
public void avalia(double nota){
somaAvaliacoes += nota;
totalAvaliacoes++;
}
public double obtemMedia(){
return somaAvaliacoes / totalAvaliacoes;
}
}
Filme
package br.com.alura.screenmatch.modelos;
public class Filme extends Titulo {
private String diretor;
public String getDiretor() {
return diretor;
}
public void setDiretor(String diretor) {
this.diretor = diretor;
}
}
Série
package br.com.alura.screenmatch.modelos;
public class Serie extends Titulo {
private int temporadas;
private int epsTemporada;
private int minutosEpisodio;
private boolean ativa;
public int getTemporadas() {
return temporadas;
}
public int getEpsTemporada() {
return epsTemporada;
}
public int getMinutosEpisodio() {
return minutosEpisodio;
}
public boolean isAtiva() {
return ativa;
}
public void setTemporadas(int temporadas) {
this.temporadas = temporadas;
}
public void setAtiva(boolean ativa) {
this.ativa = ativa;
}
public void setMinutosEpisodio(int minutosEpisodio) {
this.minutosEpisodio = minutosEpisodio;
}
public void setEpsTemporada(int epsTemporada) {
this.epsTemporada = epsTemporada;
}
@Override
public int getDuracaoEmMinutos() {
return temporadas * epsTemporada * minutosEpisodio;
}
}
Calculadora de Tempo
package br.com.alura.screenmatch.calculos;
import br.com.alura.screenmatch.modelos.Titulo;
public class CalcularTempo {
private int tempoTotal = 0;
public int getTempoTotal() {
return this.tempoTotal;
}
public void inclui(Titulo titulo){
this.tempoTotal += titulo.getDuracaoEmMinutos();
}
}
Principal
import br.com.alura.screenmatch.calculos.CalcularTempo;
import br.com.alura.screenmatch.modelos.Filme;
import br.com.alura.screenmatch.modelos.Serie;
public class Main {
public static void main(String[] args) {
Filme filme1 = new Filme();
filme1.setNome("Jogador Nº 1");
filme1.setAnoLancamento(2018);
filme1.setDuracaoEmMinutos(140);
filme1.setDiretor("Steven Spielberg");
filme1.exibeFichaTecnica();
filme1.avalia(7.4);
filme1.avalia(9.4);
filme1.avalia(6.8);
System.out.println("Total de Avalições: " + filme1.getTotalAvaliacoes());
System.out.println(filme1.obtemMedia());
Filme filme2 = new Filme();
filme2.setNome("Tropa de Elite");
filme2.setAnoLancamento(2007);
filme2.setDuracaoEmMinutos(115);
filme2.setDiretor("José Padilha");
Serie serie1 = new Serie();
serie1.setNome("Lucifer");
serie1.setAnoLancamento(2021);
serie1.setTemporadas(6);
serie1.setEpsTemporada(13);
serie1.setMinutosEpisodio(45);
serie1.exibeFichaTecnica();
System.out.println("A Sua Maratona vai durar: " + serie1.getDuracaoEmMinutos() + " Minutos.");
CalcularTempo calculadora = new CalcularTempo();
calculadora.inclui(filme1);
calculadora.inclui(filme2);
calculadora.inclui(serie1);
System.out.println("Tempo total para assistir à esses Títulos: " + calculadora.getTempoTotal());
}
}