Primeiro você cria uma nova classe chamada Titulo no pacote br.com.alura.screenmatch.modelos, movendo para ela todos os atributos e métodos da classe Filme:
package br.com.alura.screenwatch.modelo;
public class Titulo {
private String nome;
private int anoDeLancamento;
private boolean incluidoNoPlano;
protected double somaAvaliacao;
private int totalDeAvaliacao;
private int duracaoEmMinutos;
public int getTotalDeAvaliacao() {
return totalDeAvaliacao;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setAnoDeLancamento(int anoDeLancamento) {
this.anoDeLancamento = anoDeLancamento;
}
public void setSomaAvaliacao(double somaAvaliacao) {
this.somaAvaliacao = somaAvaliacao;
}
public void setDuracaoEmMinutos(int i) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public void exibeFichaTecnica() {
System.out.println("Nome da Série: " + nome);
System.out.println("Ano de lançamento: " + anoDeLancamento);
}
public void avaliar(double nota) {
somaAvaliacao += nota;
totalDeAvaliacao++;
}
public double calcularMedia() {
if (totalDeAvaliacao == 0) {
return 0;
}
return somaAvaliacao / totalDeAvaliacao;
}
}
Agora, você vai precisa cria a classe Serie, que vai herdar da classe Titulo, e terá os atributos temporadas, ativa, episodiosPorTemporada e minutosPorEpisodio, além dos métodos getter/setter desses atributos:
package br.com.alura.screenwatch.modelo;
public abstract class Serie extends Titulo {
public int setMinutosPorEpisodio;
private String diretor;
public String getDiretor() {
return diretor;
}
public void setDiretor(String diretor) {
this.diretor = diretor;
}
public abstract int getDuracaoEpisodio();
public void setMinutosPorEpisodio(int i) {
}
}
Crie o pacote br.com.alura.screenmatch.calculos e dentro dele crie a classe CalculadoraDeTempo:
package br.com.alura.screenmatch.calculo;
import br.com.alura.screenwatch.modelo.Titulo;
public class CalculadoraDeTempo {
private int tempoTotal;
public int getTempoTotal() {
return tempoTotal;
}
// public void adiciona(Serie s) {
// tempoTotal += s.getDuracaoEpisodio();
// }
public void adiciona(Titulo titulo) {
tempoTotal += titulo.getDuracaoEmMinutos();
}
}
Para testar os novos códigos, altere o método main da classe Principal:
package br.com.alura.screenwatch.modelo;
import br.com.alura.screenmatch.calculo.CalculadoraDeTempo;
public class Principal {
public static void main(String[] args) {
// Série 1: Blank
GL blank = new GL();
blank.setNome("Blank the series");
blank.setAnoDeLancamento(2024);
blank.setTemporadas(1);
blank.setEpisodiosPorTemporada(1);
blank.setMinutosPorEpisodio(60);
blank.exibeFichaTecnica();
blank.avaliar(8);
blank.avaliar(10);
blank.avaliar(9);
System.out.println("Soma das avaliações: " + blank.somaAvaliacao);
System.out.println("Total de avaliações: " + blank.getTotalDeAvaliacao());
System.out.println("Média: " + blank.calcularMedia());
System.out.println("Duração total: " + blank.getDuracaoEmMinutos() + " minutos");
// Série 2: The Secret of Us
GL theSecretOfUs = new GL();
theSecretOfUs.setNome("The Secret of the Us");
theSecretOfUs.setAnoDeLancamento(2024);
theSecretOfUs.setTemporadas(1);
theSecretOfUs.setEpisodiosPorTemporada(8);
theSecretOfUs.setMinutosPorEpisodio(60);
theSecretOfUs.exibeFichaTecnica();
System.out.println("Duração total: " + theSecretOfUs.getDuracaoEmMinutos() + " minutos");
// Série 3: Petrichor
GL outraSerie = new GL();
outraSerie.setNome("Petrichor");
outraSerie.setAnoDeLancamento(2024);
outraSerie.setTemporadas(1);
outraSerie.setEpisodiosPorTemporada(1);
outraSerie.setMinutosPorEpisodio(70);
// Calculadora
CalculadoraDeTempo calculadora = new CalculadoraDeTempo();
calculadora.adiciona(blank);
calculadora.adiciona(theSecretOfUs);
calculadora.adiciona(outraSerie);
System.out.println("Tempo total para maratonar todas as séries: " + calculadora.getTempoTotal() + " minutos");
}
}