Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Getters e Setters

Getters e Setters são utilizados apenas para atributos privados ou para públicos também?

1 resposta
solução!

Olá Thyago, Getters e setters podem ser usados em ambos os casos, a única vantagem que vejo no entanto para os públicos é que o resto do seu código (ou do código de terceiros se esta for uma lib) se estiverem usando o setter e o getter podem ter uma manutenção mais fácil (ex, você decidiu que determinado valor ou tipo de informação não pode ser mais enviada de uma determinada forma então é só mudar o getter e o setter).

Outro ponto é que você pode construir setters que aceitem outros tipos de dados, por exemplo, você pode ter um atributo de data que é uma instância de uma classe de data e ter um setter que aceita uma string converte ela em uma instância do objeto data e salva ele no atributo, assim como um getter que pode pegar este mesmo objeto do tipo data e retornar uma string de uma data formatada.

Há alguns pontos em que há vantagens como os citados, contudo é necessário verificar muito bem se você de fato quer manter estes atributos abertos de forma pública, nesse mesmo exemplo que eu dei o atributo não precisaria ser público para que ele fosse usado, de certa forma dependendo do objeto seria interessante que ele não fosse público, o setter por exemplo poderia ter uma lógica que levanta uma exceção se for passado um objeto data com uma data anterior a hoje para o vencimento de um boleto por exemplo.

Não digo que nunca se deve usar, mas que se deve pensar muito bem antes de implementar atributos públicos e deixar que outras partes do sistema comecem a ficar dependentes dele, a refatoração no futuro caso você deseje mudar esta decisão pode ser considerável.