Modelos Filme, Série (classes filhas) e Título (classe pai):
package br.com.alura.screenmatch.modelos;
public class Filme extends Titulo {
private String diretor;
public String getDiretor() {
return diretor;
}
public void setDiretor(String director){
this.diretor = diretor;
}
}
package br.com.alura.screenmatch.modelos;
public class Serie extends Titulo {
private int numDeTemporadas;
private boolean ativa;
private int episodiosPorTemporada;
private double minutosPorEpisodio;
public int getNumDeTemporadas(){
return numDeTemporadas;
}
public void setNumDeTemporadas(int numDeTemporadas){
this.numDeTemporadas = numDeTemporadas;
}
public boolean getAtiva(){
return ativa;
}
public void setAtiva(boolean ativa){
this.ativa = ativa;
}
public int getEpisodiosPorTemporada(){
return episodiosPorTemporada;
}
public void setEpisodiosPorTemporada(int episodiosPorTemporada){
this.episodiosPorTemporada = episodiosPorTemporada;
}
public double getMinutosPorEpisodio(){
return minutosPorEpisodio;
}
public void setMinutosPorEpisodio(double minutosPorEpisodio){
this.minutosPorEpisodio = minutosPorEpisodio;
}
@Override
public double getDuracaoEmMinutos(){
return numDeTemporadas * minutosPorEpisodio * episodiosPorTemporada;
}
}
package br.com.alura.screenmatch.modelos;
public class Titulo {
private String nome;
private int anoDeLancamento;
private double duracaoEmMinutos;
private double somaDasAvaliacoes = 0;
private double totalAvaliacoes = 0;
private double resultadoAvaliacoes;
private boolean incluidoNoPlano;
public void exibirFichaTecnica() {
System.out.println("Nome do Título: " + nome +
"\nAno de Lançamento: " + anoDeLancamento +
"\nDuração (Em Minutos): " + duracaoEmMinutos +
"\nAvaliação: " + resultadoAvaliacoes +
"\nIncluído no Plano: " + incluidoNoPlano);
}
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getAnoDeLancamento() {
return this.anoDeLancamento;
}
public void setAnoDeLancamento(int anoDeLancamento) {
this.anoDeLancamento = anoDeLancamento;
}
public boolean getIncluidoNoPlano() {
return incluidoNoPlano;
}
public void setIncluidoNoPlano(boolean incluidoNoPlano) {
this.incluidoNoPlano = incluidoNoPlano;
}
public double getDuracaoEmMinutos() {
return this.duracaoEmMinutos;
}
public void setDuracaoEmMinutos(double duracaoEmMinutos) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
public double getTotalAvaliacoes() {
return this.totalAvaliacoes;
}
public void avaliarFilme(double notaDoFilme) {
totalAvaliacoes++;
somaDasAvaliacoes += notaDoFilme;
}
public double pegarMedia() {
resultadoAvaliacoes = somaDasAvaliacoes / totalAvaliacoes;
return resultadoAvaliacoes;
}
}
Classe principal:
package br.com.alura.screenmatch;
import br.com.alura.screenmatch.modelos.Serie;
import br.com.alura.screenmatch.calculos.CalculadoraTempo;
import br.com.alura.screenmatch.modelos.Filme;
import java.util.Scanner;
public class Principal{
public static void main(String[] args){
Scanner leitura = new Scanner(System.in);
Filme novoFilme = new Filme();
novoFilme.setNome(leitura.nextLine());
novoFilme.setAnoDeLancamento(leitura.nextInt());
novoFilme.setDuracaoEmMinutos(leitura.nextDouble());
novoFilme.setIncluidoNoPlano(leitura.nextBoolean());
novoFilme.avaliarFilme(leitura.nextDouble());
novoFilme.pegarMedia();
novoFilme.exibirFichaTecnica();
System.out.println("Total de Avaliações: " + novoFilme.getTotalAvaliacoes());
Serie novaSerie = new Serie();
novaSerie.setNome(leitura.nextLine());
leitura.nextLine();
novaSerie.setAnoDeLancamento(leitura.nextInt());
novaSerie.setNumDeTemporadas(leitura.nextInt());
novaSerie.setEpisodiosPorTemporada(leitura.nextInt());
novaSerie.setMinutosPorEpisodio(leitura.nextDouble());
novaSerie.setAtiva(leitura.nextBoolean());
novaSerie.setIncluidoNoPlano(leitura.nextBoolean());
novaSerie.exibirFichaTecnica();
System.out.println("Duração total de minutos da Série: " + novaSerie.getDuracaoEmMinutos());
CalculadoraTempo calculo = new CalculadoraTempo();
calculo.incluirTempo(novaSerie);
System.out.println(calculo.getTempoTotal());
leitura.close();