Seguem aqui as classes referidas (Titulo, Serie e CalculadoraDeTempo, Filme) na prática feitas pela minha lógica, quero saber se posso melhorar algum trecho ou se falhei em alguma boa prática.
Classe Title
package br.com.alura.screenmatch.modelos;
public class Title {
private double mediaNotas;
private double somaNotas; //encapsulando a soma de notas e o total de notas para que ninguem altere a avaliação dos filmes e a média.
private int totalNotas;
private String nome;
private int tempoDeDuracaoMinutos;
private int anoDeLancamento;
private boolean incluidoNoPlano; // encapsulando o verificador de pl
public int getTotalNotas() {
return totalNotas;
}
public String getNome() {
return nome;
}
public int getTempoDeDuracaoMinutos() {
return tempoDeDuracaoMinutos;
}
public int getAnoDeLancamento() {
return anoDeLancamento;
}
public boolean isIncluidoNoPlano() {
return incluidoNoPlano;
}
public void setIncluidoNoPlano(boolean incluidoNoPlano) {
this.incluidoNoPlano = incluidoNoPlano;
}
public void setAnoDeLancamento(int anoDeLancamento) {
this.anoDeLancamento = anoDeLancamento;
}
public void setTempoDeDuracaoMinutos(int tempoDeDuracaoMinutos) {
this.tempoDeDuracaoMinutos = tempoDeDuracaoMinutos;
}
public void setNome(String nome) {
this.nome = nome;
}
public void avaliaTitle(double nota){
somaNotas += nota;
totalNotas++;
}
public double obtermediaNotas(){
mediaNotas = somaNotas/totalNotas;
return mediaNotas;
}
public void exibeInfoTitle(){
System.out.println("Nome do Título: " + nome);
System.out.println("Ano de lançamento: " + anoDeLancamento);
System.out.println("Duração (em minutos): " + tempoDeDuracaoMinutos);
System.out.println("Título incluído no plano: " + incluidoNoPlano);
System.out.println("Nota do Título: " + obtermediaNotas());
System.out.println("Total de avaliações: " + totalNotas);
}
}
Classe Movie
package br.com.alura.screenmatch.modelos;
public class Movie extends Title {
private String diretor;
public void setDiretor(String diretor) {
this.diretor = diretor;
}
public String getDiretor() {
return diretor;
}
}
Classe Serie
package br.com.alura.screenmatch.modelos;
public class Serie extends Title{
private int temporadas;
private int episodiosPorTemporada;
private int minutosPorEpisodio;
private boolean ativa;
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;
}
public int getEpisodiosPorTemporada() {
return episodiosPorTemporada;
}
public void setEpisodiosPorTemporada(int episodiosPorTemporada) {
this.episodiosPorTemporada = episodiosPorTemporada;
}
public int getTemporadas() {
return temporadas;
}
public void setTemporadas(int temporadas) {
this.temporadas = temporadas;
}
@Override
public int getTempoDeDuracaoMinutos() {
return temporadas*episodiosPorTemporada*minutosPorEpisodio;
}
}
Classe CalculadoraDeTempo
package br.com.alura.screenmatch.calculos;
import br.com.alura.screenmatch.modelos.Title;
public class CalculadoraDeTempo {
private double tempoTotalHora;
private int tempoTotalEmMinutos;
public double getTempoTotalHora() {
return tempoTotalHora;
}
public int getTempoTotalEmMinutos() {
return tempoTotalEmMinutos;
}
// };
public void temporiza(Title t){
this.tempoTotalEmMinutos += t.getTempoDeDuracaoMinutos();
this.tempoTotalHora = Math.round(tempoTotalEmMinutos/60);
System.out.println("Tempo para maratonar (em horas): "+tempoTotalHora);
System.out.println("Tempo para maratonar (em minutos): "+ tempoTotalEmMinutos);
}
}