Eu propositalmente repeti a Impressão da ficha técnica na classe Principal só para fazer uso dos getters com o propósito de treino e memorização.
Se eu fosse utiliza apenas os getters para a impressão da ficha técnica, eu poderia colocar o pega média direto em um get ficando assim: public double getPegaMedia() {return somaDasAvaliacoes / totalDeAvaliacoes;}, mas está do jeito que está pelo simples fato de que eu não quis utilizar só os getters na impressão dentro do código da classe Filme, mesmo sabendo que eu poderia ter feito.
package br.com.alura.ScreenMatch.modelos;
public class Filme {
private String nome;
private int anoDeLancamento;
private int duracaoEmMinutos;
private double somaDasAvaliacoes;
private int totalDeAvaliacoes;
private boolean incluidoNoPlano;
public void setNome(String nome) {
this.nome = nome;
}
public void setDuracaoEmMinutos(int duracaoEmMinutos) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
public void setAnoDeLancamento(int anoDeLancamento) {
this.anoDeLancamento = anoDeLancamento;
}
public void setIncluidoNoPlano(boolean incluidoNoPlano) {
this.incluidoNoPlano = incluidoNoPlano;
}
public void avalia(double nota) {
somaDasAvaliacoes += nota;
totalDeAvaliacoes++;
}
double pegaMedia() {
return somaDasAvaliacoes / totalDeAvaliacoes;
}
private String incluidoNoPlano(boolean incluidoNoPlano) {
String resposta;
if (incluidoNoPlano) {
resposta = "Sim";
} else {
resposta = "Não";
}
return resposta;
}
//Impressão sem gettrs
public void exibeFichaTecnica() {
System.out.printf("******************************************%n%n");
System.out.println("Nome do filme: " + nome);
System.out.println("Ano de lançamento: " + anoDeLancamento);
System.out.println("Duração de filme em minutos: " + duracaoEmMinutos + " min");
System.out.printf("Média de avaliação do filme: %.2f%n", pegaMedia());
System.out.println("Total de avaliações: " + totalDeAvaliacoes);
System.out.println("Incluído no plano: " + incluidoNoPlano(incluidoNoPlano));
System.out.printf("%n******************************************");
}
//Declaração dos gettrs
public String getIncluidoNoPlano() {
return incluidoNoPlano(incluidoNoPlano);
}
public double getPegaMedia() {
return pegaMedia();
}
public String getNome() {
return nome;
}
public int getAnoDeLancamento() {
return anoDeLancamento;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public int getTotalDeAvaliacoes() {
return totalDeAvaliacoes;
}
}
import br.com.alura.ScreenMatch.modelos.Filme;
public class Principal {
public static void main(String[] args) {
Filme filmeTheMatrix = new Filme();
filmeTheMatrix.setNome("The Matrix");
filmeTheMatrix.setAnoDeLancamento(1999);
filmeTheMatrix.setDuracaoEmMinutos(135);
filmeTheMatrix.setIncluidoNoPlano(true);
filmeTheMatrix.avalia(10);
filmeTheMatrix.avalia(5.1);
filmeTheMatrix.avalia(1);
filmeTheMatrix.avalia(8.6);
filmeTheMatrix.avalia(3);
filmeTheMatrix.avalia(7);
filmeTheMatrix.avalia(4.5);
filmeTheMatrix.avalia(9);
filmeTheMatrix.avalia(2.8);
filmeTheMatrix.avalia(6);
filmeTheMatrix.exibeFichaTecnica();
//Impressão da ficha técnica via gettrs
System.out.println();
System.out.printf("-------------------------------------------%n%n");
System.out.println("Nome do filme: " + filmeTheMatrix.getNome());
System.out.println("Ano de lançamento: " + filmeTheMatrix.getAnoDeLancamento());
System.out.println("Duração de filme em minutos: " + filmeTheMatrix.getDuracaoEmMinutos() + " min");
System.out.printf("Média de avaliação do filme: %.2f%n", filmeTheMatrix.getPegaMedia());
System.out.println("Total de avaliações: " + filmeTheMatrix.getTotalDeAvaliacoes());
System.out.println("Incluído no plano: " + filmeTheMatrix.getIncluidoNoPlano());
System.out.printf("%n-------------------------------------------");
}
}