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

diferenca

Uma duvida a respeito de conceitos!

Quando se cria um set para algum atributo private na class de conta por exemplo. A partir do momento que eu uso esse set no main, eu estou mudando o valor desse atributo! (correto??? ) Isso de certa forma não seria so uma forma diferente de modificar esses atributos private? Não estou conseguindo visualizar mais para frente, isso seria apenas para saber onde foi modificado o valor dos atributos private??

2 respostas
solução!

Oi Luciano, tudo bom?

Realmente, um set padrão que apenas coloca valores dentro do atributo não é muito diferente de deixa-lo public. Entretanto, se há alguma regra para popular esse atributo declaramos no set e evitamos repetição de código. É uma forma de garantir que quem for usar a classe seja obrigado a passar pela sua lógica para popular o atributo (mesmo que não haja nenhuma). No dia que isso acontecer, você não precisará passar pelo código todo olhando onde você coloca valores dentro do atributo, pois já se usa o set =)

Espero ter ajudado.

Abraço =)

Olá Luciano,

Você está certo, é uma forma de modificar o valor, mas nesse set você pode colocar algumas regras de negócio para a alteração desse atributo, vejamos o seguinte cenário.

Um usuário tem 5000 na conta, e quer fazer uma transferência, isso é simples, basta chamar o método transfere e passar o valor, nele você vai ter que chamar o setValor do seu usuário,é nele que modifica o valor da conta, porém o valor que ele pediu para ser transferido é de 7000, ou seja, ele não tem dinheiro para transferir, portanto dentro desse setValor você pode tratar essa situação, impedindo que o dinheiro seja transferido e lançando uma exception informando que o usuário não tem dinheiro para completar a transferência. Claro isso é apenas um exemplo, antes mesmo de chamar a setValor você poderia usar a getValor para fazer o mesmo tratamento, mas é uma possibilidade.

Espero ter ajudado