1
resposta

[Dúvida] REPETIDO?

ESTOU EM DUVIDA O PORQUE DECLAROU O GET 2 VEZES OS MESMO METODOS QUAL O SENTIDO?

package br.com.alura.screenmatch.modelos;

public class Filme {

    private String nome;
    private int anoDeLancamento;
    private boolean incluidoNoPlano;
    private double somaDasAvaliacoes;
    private int totalDeAvaliacoes;
    private int duracaoEmMinutos;

    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 exibeFichaTecnica() {
        System.out.println("Nome do br.com.alura.screenmatch.modelos.Filme: " + nome);
        System.out.println("Data de Lançamento: " + anoDeLancamento);
        System.out.println("Duração: " + duracaoEmMinutos);
    }

    public void avalia(double nota) {
        somaDasAvaliacoes += nota;
        totalDeAvaliacoes++;
    }

    public double pegaMedia() {
        return somaDasAvaliacoes / totalDeAvaliacoes;
    }

    public double getSomaDasAvaliacoes() {
        return somaDasAvaliacoes;
    }

    public int getTotalDeAvaliacoes() {
        return totalDeAvaliacoes;
    }

    public String getNome() {
        return nome;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    public boolean isIncluidoNoPlano() {
        return incluidoNoPlano;
    }

    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }
}

import br.com.alura.screenmatch.modelos.Filme;

public class Principal { public static void main(String[] args) { Filme meuFilme = new Filme(); meuFilme.setNome("O poderoso chefão"); meuFilme.setAnoDeLancamento(1970); meuFilme.setDuracaoEmMinutos(180);

    meuFilme.exibeFichaTecnica();
    meuFilme.avalia(8);
    meuFilme.avalia(5);
    meuFilme.avalia(10);
    System.out.println(meuFilme.getSomaDasAvaliacoes());
    System.out.println("Total de avaliações: " + meuFilme.getTotalDeAvaliacoes());
    System.out.println(meuFilme.pegaMedia());
    // meuFilme.somaDasAvaliacoes = 10;
    // meuFilme.totalDeAvaliacoes = 1;
    // System.out.println(meuFilme.pegaMedia());


         // System.out.println(meuFilme.getNome());
       // System.out.println(meuFilme.getSomaDasAvaliacoes());
      // System.out.println(meuFilme.getTotalDeAvaliacoes());
     // System.out.println(meuFilme.getAnoDeLancamento());
    // System.out.println(meuFilme.isIncluidoNoPlano());
   // System.out.println(meuFilme.getDuracaoEmMinutos());

}

}

COMO PODE VER EU ATE COMENTEI PORQUE USAMOS O MESMO GET 2 VEZES?

1 resposta

Oi Levi! Tudo bem?

Na classe Filme, temos vários gets, mas cada um relacionado a um atributo. Por isso, temos o getSomaDeAvaliacoes() e o getTotalDeAvaliacoes(), por exemplo: o primeiro se relaciona à soma, e o segundo ao total das avaliações feitas.

Depois, na classe Principal, estamos chamando esses métodos. Ou seja, tinha uma classe Filme e criamos um objeto do tipo filme, quando utilizamos o new. Para o objeto filme específico que criamos, queríamos saber qual era o total de avaliações. Por isso precisamos chamar o método do filme que era o getTotalDeAvaliacoes(). Não consegui entender de qual get duplicado você estava falando, mas caso seja algo parecido com o que comentei, existe essa diferença: na classe Filme, estamos declarando o método. Já na classe Principal, estamos chamando o método.

Caso você esteja falando de outra coisa, comenta aqui por favor pra eu te ajudar melhor! Qualquer dúvida, estou à disposição.

Abraços e bons estudos!