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) {