Titulo:
package alura.desafioheranca.modelo;
public class Titulo {
private String nome;
private int anoDeLancamento;
private int duracaoEmMinutos;
private boolean incluidoNoPlano;
private double somaDasAvaliacoes;
private int totalAvaliacoes;
public void setNome(String nome){
this.nome = nome;
}
public String getNome(){
return nome;
}
public void setAnoDeLancamento(int anoDeLancamento){
this.anoDeLancamento = anoDeLancamento;
}
public int getAnoDeLancamento(){
return anoDeLancamento;
}
public void setDuracaoEmMinutos(int duracaoEmMinutos){
this.duracaoEmMinutos = duracaoEmMinutos;
}
public int getDuracaoEmMinutos(){
return duracaoEmMinutos;
}
public void setIncluidoNoPlano(){
if (anoDeLancamento >= 2022){
incluidoNoPlano = false;
}
incluidoNoPlano = true;
}
public boolean getIncluidoNoPlano(){
return incluidoNoPlano;
}
public int getTotalAvaliacoes(){
return totalAvaliacoes;
}
public void avalia (double nota){
somaDasAvaliacoes += nota;
totalAvaliacoes ++;
}
public double pegaMedia(){
if (totalAvaliacoes == 0){
return 0;
}
return somaDasAvaliacoes / totalAvaliacoes;
}
public void exibirFichaTecnica(){
System.out.printf("Nome do Filme: %s", getNome());
System.out.printf("\nAno de lançamento: %d", getAnoDeLancamento());
System.out.printf("\nDuraçao: %d minutos", getDuracaoEmMinutos());
System.out.printf("\nIncluido no plano: %b", getIncluidoNoPlano());
System.out.printf("\nTotal de avaliaçoes: %d", getTotalAvaliacoes());
System.out.printf("\nMédia Geral: %.1f ", pegaMedia());
}
}
Filme:
package alura.desafioheranca.modelo;
public class Filme extends Titulo {
private String diretor;
void setDiretor(String diretor){
this.diretor = diretor;
}
String getDiretor(){
return diretor;
}
}
Serie:
package alura.desafioheranca.modelo;
public class Serie extends Titulo {
private int temporadas;
private int epPorTemp;
private boolean ativa;
private int minutosPorEpisodio;
public int getTemporadas() {
return temporadas;
}
public void setTemporadas(int temporadas) {
this.temporadas = temporadas;
}
public int getEpPorTemp() {
return epPorTemp;
}
public void setEpPorTemp(int epPorTemp) {
this.epPorTemp = epPorTemp;
}
public boolean getAtiva() {
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 * epPorTemp * minutosPorEpisodio;
}
}
CalculadoraDeTempo:
package alura.desafioheranca.modelo.calculos;
import alura.desafioheranca.modelo.Titulo;
public class CalculaTempo {
private int tempoTotal;
public int getTempoTotal(){
return tempoTotal;
}
public void inclui(Titulo titulo){
this.tempoTotal += titulo.getDuracaoEmMinutos();
}
}
Principal:
import alura.desafioheranca.modelo.Filme;
import alura.desafioheranca.modelo.Serie;
import alura.desafioheranca.modelo.calculos.CalculaTempo;
public class Principal {
public static void main(String[] args) {
Filme filme = new Filme();
filme.setNome("Férias Frustradas");
filme.setAnoDeLancamento(2015);
filme.setDuracaoEmMinutos(131);
filme.setIncluidoNoPlano();
filme.avalia(10);
filme.avalia(9);
filme.avalia(7);
filme.exibirFichaTecnica();
System.out.println("\n");
Serie serie = new Serie();
serie.setNome("Alice in boderland");
serie.setAnoDeLancamento(2020);
serie.setIncluidoNoPlano();
serie.setTemporadas(3);
serie.setAtiva(true);
serie.setEpPorTemp(8);
serie.setMinutosPorEpisodio(40);
serie.avalia(10);
serie.avalia(7);
serie.avalia(10);
serie.avalia(10);
serie.exibirFichaTecnica();
System.out.print("\n");
CalculaTempo calculadora = new CalculaTempo();
calculadora.inclui(serie);
calculadora.inclui(filme);
System.out.printf("\nTempo total: %d minutos.", calculadora.getTempoTotal());
}
}