Segue a atividade proposta:
Classe Titulo:
package br.com.alura.screenmatch.modelos;
public class Titulo {
private String nome;
private int anoDeLancamento;
private int duracaoEmMinutos;
private boolean incluidoNoPlano;
private double somaDasAvaliacoes;
private int totalDeAvaliacoes;
public String getNome() {
return nome;
}
public int getAnoDeLancamento() {
return anoDeLancamento;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public boolean isIncluidoNoPlano() {
return incluidoNoPlano;
}
public int getTotalDeAvaliacoes() {
return totalDeAvaliacoes;
}
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 double pegaMedia() {
if (totalDeAvaliacoes != 0) {
return somaDasAvaliacoes/totalDeAvaliacoes;
} else {
return 0.0;
}
}
public void avalia(double avaliacao){
somaDasAvaliacoes += avaliacao;
totalDeAvaliacoes++;
}
@Override
public String toString() {
return "Nome Título: " + getNome() +
", Ano de Lançamento: " + getAnoDeLancamento() +
", Duração em minutos: " + getDuracaoEmMinutos() +
", Avaliação: " + pegaMedia();
}
}
Classe 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;
}
}
Classe Serie:
package br.com.alura.screenmatch.modelos;
public class Serie extends Titulo {
private int numeroTemporadas;
private boolean ativa;
private int episodiosPortemporada;
private int minutosPorEpisodio;
public int getNumeroTemporadas() {
return numeroTemporadas;
}
public void setNumeroTemporadas(int numeroTemporadas) {
this.numeroTemporadas = numeroTemporadas;
}
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 minutosPorEpisodio * episodiosPortemporada * numeroTemporadas;
}
}
Classe Main:
import br.com.alura.screenmatch.calculos.CalculadoraDeTempo;
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("Forest Gump");
filme1.setAnoDeLancamento(1994);
filme1.setDuracaoEmMinutos(142);
filme1.setIncluidoNoPlano(true);
filme1.avalia(8.7);
filme1.avalia(9.0);
filme1.avalia(9.2);
filme1.avalia(9.1);
System.out.println(filme1.toString());
Serie serie1 = new Serie();
serie1.setNome("Brothrs in Arms");
serie1.setAnoDeLancamento(2001);
serie1.setMinutosPorEpisodio(62);
serie1.setEpisodiosPortemporada(10);
serie1.setNumeroTemporadas(1);
serie1.setIncluidoNoPlano(false);
serie1.avalia(7.7);
serie1.avalia(9.0);
serie1.avalia(9.2);
serie1.avalia(8.6);
System.out.println(serie1.toString());
CalculadoraDeTempo calculadoraDeTempo = new CalculadoraDeTempo();
calculadoraDeTempo.inclui(filme1);
calculadoraDeTempo.inclui(serie1);
System.out.println("tempo total para maratonar: " + calculadoraDeTempo.getTempoTotal());
}
}
Output:
Nome Título: Forest Gump, Ano de Lançamento: 1994, Duração em minutos: 142, Avaliação: 9.0
Nome Título: Brothrs in Arms, Ano de Lançamento: 2001, Duração em minutos: 620, Avaliação: 8.625
tempo total para maratonar: 762
Process finished with exit code 0