Principal
package br.com.alura.screenmatch.modelos;
import br.com.alura.screenmatch.calculos.CalculadoraDeTempo;
public class Principal {
public static void main(String[] args) {
// Filme
Filme filme1 = new Filme();
filme1.setNome("Poderoso Chefão");
filme1.setAnoDeLancamento(1972);
filme1.setDuracaoEmMinutos(175);
filme1.setIncluidoNoPlano(true);
filme1.exibeFichaTecnica();
filme1.avalia(9);
filme1.avalia(9);
filme1.avalia(10);
System.out.printf("Média de avaliações do filme: %.2f%n%n",
filme1.pegaMedia());
// Série
Serie peakyBlinders = new Serie();
peakyBlinders.setNome("Peaky Blinders");
peakyBlinders.setAnoDeLancamento(2013);
peakyBlinders.setTemporadas(6);
peakyBlinders.setEpisodiosPorTemporada(6);
peakyBlinders.setMinutosPorEpisodio(60);
peakyBlinders.setAtiva(false);
peakyBlinders.setIncluidoNoPlano(true);
peakyBlinders.exibeFichaTecnica();
peakyBlinders.avalia(10);
peakyBlinders.avalia(9);
peakyBlinders.avalia(9.5);
System.out.println("Duração para maratonar Peak Blinders: " + peakyBlinders.getDuracaoEmMinutos());
// Filme 2
Filme outroFilme = new Filme();
outroFilme.setNome("Interestelar");
outroFilme.setAnoDeLancamento(2014);
outroFilme.setDuracaoEmMinutos(169);
outroFilme.setIncluidoNoPlano(true);
//Calculadora de tempo
CalculadoraDeTempo calculadora = new CalculadoraDeTempo();
calculadora.inclui(filme1);
calculadora.inclui(outroFilme);
calculadora.inclui(peakyBlinders);
System.out.println(calculadora.getTempoTotal());
}
}
Titulo
package br.com.alura.screenmatch.modelos;
public class Titulo {
private String nome;
private int anoDeLancamento;
private boolean incluidoNoPlano;
private double somaDasAvaliacoes;
private int totalDeAvaliacoes;
private int duracaoEmMinutos;
// GETTERS
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;
}
// SETTERS
public void setNome(String nome) {
this.nome = nome;
}
public void setAnoDeLancamento(int anoDeLancamento) {
this.anoDeLancamento = anoDeLancamento;
}
public void setIncluidoNoPlano(boolean incluidoNoPlano) {
this.incluidoNoPlano = incluidoNoPlano;
}
public void setDuracaoEmMinutos(int duracaoEmMinutos) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
// Métodos de lógica
public void exibeFichaTecnica(){
System.out.println("=====================================");
System.out.println("Título: " + nome);
System.out.println("Ano de lançamento: " + anoDeLancamento);
System.out.println("Duração: " + duracaoEmMinutos + " min");
System.out.println("Incluído no plano: " + (incluidoNoPlano ? "Sim" : "Não"));
}
public void avalia(double nota){
somaDasAvaliacoes += nota;
totalDeAvaliacoes++;
}
public double pegaMedia(){
if (totalDeAvaliacoes == 0) return 0;
return somaDasAvaliacoes / totalDeAvaliacoes;
}
}
Filme
// src > br.com.alura.screenmatch.modelos > Filme.java
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;
}
}