Olá desenvolvedores, conheceremos hoje os métodos setters e getters, respectivamente significam pegar (get) e atribuir (set). Eles são utilizados sempre que os atributos da classe forem privados. Mas espera aí, no tutorial passado a visibilidade dos atributos que era default (private) não foi alterada para pública? Que história é essa agora de atributo privado?
Sim, modificamos a visibilidade com o propósito de apresentá-lo aos modificadores de acesso. Além de exemplificar como eles afetam de forma direta a interação com os atributos, métodos e classes. Em “MODIFICADORES DE ACESSO: PUBLIC E PRIVATE”, foi utilizado uma estratégia didática para uma melhor e facilitada compreensão. Então se você ainda não o leu, aconselho-o a fazê-lo logo e só depois voltar a este tutorial.
Entenda que em Java os atributos seguem a forma padrão e possuem acesso privado. E é este um dos principais objetivos ao atribuir visibilidade restrita a um atributo, restringir o acesso a eles e aos métodos.
Obviamente que esta não é uma regra engessada. Trata-se de um cuidado, de um recurso utilizado para proteger o acesso indiscriminado aos dados. Entretanto, espera-se que você programador não desenvolva suas aplicações às cegas. E eu particularmente espero que nossos tutoriais o estejam ajudando a entender o quê e o porquê de cada recurso. Assim você será capaz de tomar suas próprias decisões consciente das consequências.
Enfim, na classe Aluno defina a visibilidade dos atributos como private. Por conseguinte, essa visibilidade definirá que os atributos e os métodos só poderão ser manipulados apenas no local de sua definição. E já vimos que dessa forma não seremos capazes de acessá-los no método main. É aí que se inserem os métodos getters e setters.
MÉTODOS SETTERS E GETTERS NA PRÁTICA
O método set (atribuir) é utilizado para receber os dados dos atributos e injetá-los. E o método get (pegar), por sua vez, é utilizado para obter e retornar o valor “setado”. E ainda, todos os atributos possuem os métodos getters e setters.
Estes métodos, como você já deve estar imaginando podem ser gerados automaticamente. Mas primeiramente vamos codifica-los na mão, para que você possa ter conhecimento sobre os elementos que o compõem. Assim, como da estrutura do método.
MÉTODO SET
O método set sempre recebe um parâmetro do mesmo tipo do atributo qual está sendo atualizado. Isto é, estamos criando um método set para o atributo “nome” que é do tipo String. Logo, o parâmetro que o método irá receber será também do tipo String. Veja na prática como fica a assinatura do método.
public void setNome (String nome){}
No exemplo acima o método set precisa ser acessado dentro do escopo de todo o projeto por isso sua visibilidade é pública. Assim, a assinatura compõe-se também da palavra reservada void, que indica que o método não possui nenhum tipo de retorno.
Na sequência da palavra-chave void, o prefixo set seguido do nome do atributo iniciado sempre com letra maiúscula (técnica Camel Case). E por fim, dentro do parêntese, o atributo a ser “setado”, precedido da especificação do tipo do atributo.
Observe que o parâmetro possui, além do mesmo tipo, o mesmo identificador do objeto. Então, se guardássemos o nome recebido por meio do parâmetro dentro da variável nome, não estaríamos referenciando o atributo do objeto.
Assim, para evitar complicações dessa natureza utilizamos a palavra reservada this. Ela é utilizada para indicar que o atributo que ela precede, é um atributo da classe. O uso do this é opcional. Porém, ao utilizá-lo temos dois propósitos em mente, deixar claro que se trata de um atributo da classe e evitar a ambiguidade. Revendo a assinatura do método, ele ficará dessa forma.
public void setNome (String nome){
this.nome = nome;
}
E note que quando usamos a palavra reservada “this.nome” o Java já entende que estamos referenciando um atributo da classe. Dessa forma ele lista todos os atributos que começam com o nome.
MÉTODO GET
O método get não recebe nenhum parâmetro, mas retorna um atributo, que neste caso será o nome. Vamosver na prática como fica a assinatura do método?
public String getNome(){
return this.nome;
}
Da mesma forma que o set, o método get precisa ser acessado de qualquer parte do projeto. É por este motivo que ele também possui visibilidade pública, possuindo ainda o tipo do dado a ser retornado.
E mais, a assinatura do método contém ainda o prefixo get seguido do nome do atributo iniciado sempre com letra maiúscula (técnica Camel Case). E como não retorna nada, não necessita da palavra reservada void, e pelo mesmo motivo o parêntese fica vazio.
SETTERS E GETTERS E O MÉTODO MAIN
Estando com os métodos setters e getters criados, vamos ver como isso funciona no método main.
aluno01.setNome("Alex");
O get será usado quando for necessário imprimir o dado no console, gerar um relatório, concatenar Strings e outras muitas possibilidades. Enfim, ele sempre será usado no contexto de resgatar um dado do objeto e utilizá-lo em alguma ação. Como agora por exemplo, onde desejamos imprimir no console o nome atribuído.
System.out.println("NOME: " +aluno01.getNome());
A manipulação dos dados do objeto pode ocorrer em qualquer parte do sistema. E isso torna importante e prático o uso do get para resgatar os dados que foram setados.
AUTOMATIZANDO O PROCESSO
Lembra que falamos que os métodos setters e getters podem ser gerados de forma automática. Enfim chegou o momento de saber como fazer a mágica acontecer. Em alguma área livre da classe Aluno, clique com o botão direito do mouse, [Source => Generate Getters and Setters…].
Na janela Generate Getters and Setters, selecione todos os atributos cujos Getters e Setters deseja gerar. Conclua clicando em [Generate].
A partir de agora você pode proceder com a atribuição dos dados do objeto no método principal, usando sempre a fórmula “variáveldoObjeto.setAtributo(parâmetro);”.
Desse modo, para recuperar os dados e imprimir no console, “método_print(variável.getAtributo());”
O resultado no console…
EM POUCAS PALAVRAS
Aprendemos hoje sobre os métodos, Set que servem para atribuir dados a um objeto. E o método Get que é utilizado no momento de “resgatar” este mesmo dado atribuído, e utilizá-lo para alguma ação efetiva. Tal ação pode, por exemplo ser imprimir o dado obtido no console e exibi-lo para o usuário.
O método empregado no tutorial anterior cumpriu apenas o papel de apresenta-lo de forma didática aos dois principais modificadores de acesso. E mostrar como eles influenciam diretamente na forma como vamos manipular um objeto, considerando sua visibilidade.
Avançamos hoje um grande e importante passo na aquisição do conhecimento que nos capacitará a construir a aplicação que quisermos. Seja consistente em seus estudos e esteja presente seja no curso Formação Java Web.
Ou aqui no site do JDev Treinamento lendo os tutorias que disponibilizamos frequentemente. Ou ainda, no Youtube assistindo as videoaulas que disponibilizamos por lá, ou apenas curtindo os vídeos com dicas sobre a carreia de programador.