4.4 Getters e Setters

Se todos os atributos de nossas classes forem private, precisaremos criar um método sempre que quisermos que alguém consiga adicionar um valor ao atributo e o mesmo quando quisermos que alguém consiga ler e exibir este valor. Assim como fizemos com os métodos adicionaValor e retornaValor.

A convenção de nome para esses dois métodos é utilizar o prefixo get

(pegar) e set (atribuir). Por exemplo, no lugar de chamar os métodos de adicionaValor e retornaValor, podemos chamá-los de setValor e getValor, respectivamente.

Nosso código fica assim:

public class Livro { private double valor;

// demais atributos e metodos

public double getValor() { return valor;

}

public void setValor(double valor) { this.valor = valor;

}

}

Repare que o método get não recebe nenhum parâmetro e apenas re-

torna o atributo, enquanto o set sempre recebe um parâmetro com o mesmo tipo do que o atributo que será atualizado.

Eclipse: GGAS e Autocomplete

Criar getters e setters pode parecer um processo trabalhoso, mas, por ser um padrão de código muito comum, as principais IDEs do mercado possuem atalhos e templates que nos ajudam a fazer isso.

No eclipse, você pode fazer isso de forma muito produtiva utilizando o atalho Control + 3 e depois digitando ggas. Repare que essas são as iniciais do comando Generate Getters and Setters. Selecionando esta opção você poderá escolher para quais atributos criar os métodos e clicar em Finish.

Tudo pronto, o Eclipse gerou o código todo pra você!

deve ficar assim:

public class Livro {
java
private String nome; private String descricao; private double valor; private String isbn; private Autor autor;
 
// demais metodos omitidos public double getValor() {
 
return valor;
 
}
 
java
public void setValor(double valor) { this.valor = valor;

}

public String getNome() { return nome;

}

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

}

public String getDescricao() { return descricao;

}

public void setDescricao(String descricao) { this.descricao descricao;

}

public String getisbn() { return isbn;

}

public void setisbn(String isbn) { this.isbn isbn;

}

public Autor getAutor() { return autor;

}

public void setAutor(Autor autor) { this.autor autor;

}

}

Precisamos fazer o mesmo para nossa classe Autor:

public class Autor {
java
private String nome; private String email; private String cpf;
 
// demais metodos omitidos public String getNome() {
 
return nome;
 
}
 
java
public void setNome(String nome) { this.nome nome;

}

public String getEmail() { return email;

}

public void setEmail(String email) { this.email = email;

}

public String getCpf() { return cpf;

}

public void setCpf(String cpf) { this.cpf = cpf;

}

}

E, por fim, será necessário modificar a classe CadastroDeLivros para

que deixe de acessar os atributos diretamente. Seu código final deve ficar parecido com:

public class CadastroDeLivros {
text
public static void main(String[] args) {

⬅️ Capítulo Anterior | Próximo Capítulo ➡️