Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida sobre o uso do set e get

Pelo que entendi, o set serve para definir/modificar um valor/atributo de uma classe privada, já o get serve para conseguir pegar esse valor/atributo e, por exemplo, imprimir com o System.out.print..., me corrijam se meu entendimento estiver errado.

Tenho uma dúvida, depois da ultima vídeo aula Criando métodos que modificam valores, e por desatenção minha, não estabeleci o get para as classe, o único que ficou foi o da classe totalDeAvaliacoes que vem de aula anterior, e o código executou normalmente, inclusive imprimiu os atributos do void exibeFichaTecnica sem nenhum problema, ai vem a minha dúvida, se eu não precisei de todos esses getters nesse código para imprimir o que eu queria que fosse impresso, porque escreve-los?

Quero entender qual a lógica da aplicação deles nesse código?

Tem uma razão por conta uma possibilidade futura para algo, é bom praticar para ser habitual, ou o que?

E porque no boolean é is e não get?

4 respostas

vc está correto sobre o get e setter, setter como já diz, está settando uma variavel, e o get, está buscando essa variavel, não vi a video aula do professor, mas se ele não estiver usando os getter, pode tirar fora, não faz sentido ter trecho de código e não usar, más tira só se não estiver usando em lugar nenhum, claro.

Obrigado pela resposta Alisson Fernando.

No caso, o código da aula, com os getters, é esse.

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 String getNome() {
        return nome;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    public boolean isIncluidoNoPlano() {
        return incluidoNoPlano;
    }

    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setAnoDeLancamento(int anoDeLancamento) {
        this.anoDeLancamento = anoDeLancamento;
    }

    public void setIncluidoNoPlano(boolean incluidoNoPlano) {
        this.incluidoNoPlano = incluidoNoPlano;
    }

    public void setDuracaoEmMinutos(int duracaoEmMinutos) {
        this.duracaoEmMinutos = duracaoEmMinutos;
    }

    public int getTotalDeAvaliacoes() {
        return totalDeAvaliacoes;
    }

    public void exibeFichaTecnica(){
        System.out.println("Nome do filme: " + nome);
        System.out.println("Ano de lançamento: " + anoDeLancamento);
    }

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

    public double pegaMedia(){
        return somaDasAvaliacoes / totalDeAvaliacoes;
    }
}
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("Total de avaliações: " + meuFilme.getTotalDeAvaliacoes());
        System.out.println(meuFilme.pegaMedia());

    }
}
solução!

Opa fala Rodrigo tudo bem irmão? Man só conseguir ver essa variavel sem ultilizar...

    private boolean incluidoNoPlano;

e o setter e o getter dela

  public void setIncluidoNoPlano(boolean incluidoNoPlano) {
        this.incluidoNoPlano = incluidoNoPlano;
    }

e alguns getters que estão sendo chamada a propria variavel e não o getter, que se chamasse o getter iria ter a mesma funcinalidade, mas como o instrutor está chamando ela dentro da propria classe, por isso que está chamando a propria variavel e não o getter dela, então se não está sendo ultilizada, pode tirar tudo que não está fazendo sentido. até pra deixar mais limpo possivel

  public boolean isIncluidoNoPlano() {
        return incluidoNoPlano;
    }

Obrigado pela atenção e explanação Alisson Fernando.