classe 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;
public int getTotalDeAvaliacoes(){
return totalDeAvaliacoes;
}
public String getNome() {
return nome;
}
public int getAnoDeLancamento() {
return anoDeLancamento;
}
public boolean isIncluidoNoPlano() {
return incluidoNoPlano;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
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;
}
public void exibeFichaTecnica() {
System.out.println("Nome do filme: " + nome);
System.out.println("Ano de lançamento: " + anoDeLancamento);
System.out.println("Duração em minutos: " + duracaoEmMinutos);
System.out.println("Incluso no plano: " + incluidoNoPlano);
}
public void avalia(double nota) {
somaDasAvaliacoes += nota;
totalDeAvaliacoes++;
}
public double pegaMedia() {
return somaDasAvaliacoes/totalDeAvaliacoes;
}
}
classe Movie
package br.com.alura.screenmatch.modelos;
public class Movie extends Titulo{
private String diretor;
public String getDiretor() {
return diretor;
}
public void setDiretor(String diretor) {
this.diretor = diretor;
}
}
classe Serie
package br.com.alura.screenmatch.modelos;
public class Serie extends Titulo{
private int temporadas;
private int episodiosPorTemporada;
private boolean ativa;
private int minutosPorEpisodio;
public int getTemporadas() {
return temporadas;
}
public void setTemporadas(int temporadas) {
this.temporadas = temporadas;
}
public int getEpisodiosPorTemporada() {
return episodiosPorTemporada;
}
public void setEpisodiosPorTemporada(int episodiosPorTemporada) {
this.episodiosPorTemporada = episodiosPorTemporada;
}
public boolean isAtiva() {
return ativa;
}
public void setAtiva(boolean ativa) {
this.ativa = ativa;
}
public int getMinutosPorEpisodio() {
return minutosPorEpisodio;
}
public void setMinutosPorEpisodio(int minutosPorEpisodio) {
this.minutosPorEpisodio = minutosPorEpisodio;
}
@Override
public int getDuracaoEmMinutos() {
return temporadas * episodiosPorTemporada * minutosPorEpisodio;
}
}
classe CalculadoraDeTempo
package br.com.alura.screenmatch.calculos;
import br.com.alura.screenmatch.modelos.Titulo;
public class CalculadoraDeTempo {
private int tempoTotal;
public int getTempoTotal() {
return this.tempoTotal;
}
public void inclui(Titulo titulo){
this.tempoTotal += titulo.getDuracaoEmMinutos();
}
}
classe Main
import br.com.alura.screenmatch.calculos.CalculadoraDeTempo;
import br.com.alura.screenmatch.modelos.Movie;
import br.com.alura.screenmatch.modelos.Serie;
public class Main {
public static void main(String[] args) {
Movie meuFilme = new Movie();
meuFilme.setNome("O Monstro da Lagoa Negra");
meuFilme.setAnoDeLancamento(1970);
meuFilme.setDuracaoEmMinutos(180);
Movie outroFilme = new Movie();
outroFilme.setNome("Conclave");
outroFilme.setAnoDeLancamento(2024);
outroFilme.setDuracaoEmMinutos(220);
meuFilme.exibeFichaTecnica();
meuFilme.avalia(6);
meuFilme.avalia(5);
meuFilme.avalia(9);
meuFilme.avalia(6.5);
System.out.println(meuFilme.getTotalDeAvaliacoes());
System.out.println(meuFilme.pegaMedia());
Serie serie = new Serie();
serie.setNome("Lost");
serie.setAnoDeLancamento(2010);
serie.exibeFichaTecnica();
serie.setTemporadas(10);
serie.setEpisodiosPorTemporada(10);
serie.setMinutosPorEpisodio(50);
System.out.println("Duração em minutos para maratonar Lost: " + serie.getDuracaoEmMinutos());
CalculadoraDeTempo calculadora = new CalculadoraDeTempo();
calculadora.inclui(outroFilme);
calculadora.inclui(serie);
System.out.println("Minutos para maratonar todos os títulos: " + calculadora.getTempoTotal());
}
}