Screenmatch
package br.com.alura.screenmatch.modelos;
public class Titulo {
private String nome;
private int anoDeLancamento;
private double totalDeAvaliacoes;
private boolean incluidoNoPlano;
private double someDasAvaliacoes;
private int duracaoEmMinutos;
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 String getNome() {
return nome;
}
public int getAnoDeLancamento() {
return anoDeLancamento;
}
public boolean isIncluidoNoPlano() {
return incluidoNoPlano;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public void exibeFichaTecnica (){
String ficha = """
Nome: %s
Ano de Lançamento: %d
Duração em minutos: %d
Incluido no plano: %b""".formatted(getNome(), getAnoDeLancamento(), getDuracaoEmMinutos(), incluidoNoPlano);
System.out.println(ficha);
}
public void avalia (double nota){
someDasAvaliacoes +=nota;
totalDeAvaliacoes++;
}
public double pegaMedia(){
return someDasAvaliacoes / totalDeAvaliacoes;
}
}
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;
}
}
package br.com.alura.screenmatch.modelos;
public class Serie extends Titulo {
int temporadas;
boolean ativa;
int episodeosPorTemporadas;
int minutosPorEpisodeo;
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 getEpisodeosPorTemporadas() {
return episodeosPorTemporadas;
}
public void setEpisodeosPorTemporadas(int episodeosPorTemporadas) {
this.episodeosPorTemporadas = episodeosPorTemporadas;
}
public int getMinutosPorEpisodeo() {
return minutosPorEpisodeo;
}
public void setMinutosPorEpisodeo(int minutosPorEpisodeo) {
this.minutosPorEpisodeo = minutosPorEpisodeo;
}
@Override
public int getDuracaoEmMinutos(){
return temporadas * minutosPorEpisodeo * episodeosPorTemporadas;
}
}
package br.com.alura.screenmatch.calculos;
import br.com.alura.screenmatch.modelos.Titulo;
public class Calculadora extends Titulo {
int tempoTotal;
public void inclui(Titulo titulo){
tempoTotal += titulo.getDuracaoEmMinutos();
}
public int getTempoTotal() {
return tempoTotal;
}
}
import br.com.alura.screenmatch.calculos.Calculadora;
import br.com.alura.screenmatch.modelos.Filme;
import br.com.alura.screenmatch.modelos.Serie;
public class Principal {
public static void main(String[] args) {
Filme filme1 = new Filme();
filme1.setNome("Shrek 2");
filme1.setAnoDeLancamento(2004);
filme1.setDuracaoEmMinutos(90);
filme1.setIncluidoNoPlano(true);
filme1.exibeFichaTecnica();
filme1.avalia(8);
filme1.avalia(10);
filme1.avalia(7.5);
filme1.avalia(9);
System.out.println(String.format("Nota: %.2f", filme1.pegaMedia()));
Serie serie = new Serie();
serie.setNome("The Good Place");
serie.setTemporadas(4);
serie.setEpisodeosPorTemporadas(15);
serie.setMinutosPorEpisodeo(22);
serie.setAnoDeLancamento(2016);
serie.exibeFichaTecnica();
Calculadora calculadora = new Calculadora();
calculadora.inclui(filme1);
calculadora.inclui(serie);
System.out.println("\nTempo de maratona: " + calculadora.getTempoTotal());
}
}