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

[Dúvida] Manter o atributo saldo privado e não criar setSaldo();

Eu gostaria de manter o atributo saldo privado e não criar um setSaldo();

A solução proposta na videoaula foi mudar o método saldo de private para protected. Contudo eu quero desenvolver a prática de manter tudo private. A única solução que encontrei para isso no fórum foi esta abaixo.

@Override
    public void deposita(double valor) {
        super.setSaldo(super.getSaldo() + valor);
        }

Criando um método setSaldo(); Funciona, mas isso me parece um pouco gambiarra. Além de que me parece menos seguro. Qualquer pessoa poderia alterar o atributo saldo quando quisesse. Alguma sugestão? Como resolvo isso?

3 respostas
solução!

Boa noite Saulo, tudo bem?

Voce pode manter a variavel "saldo" como private e criar um método "setSaldo" como protected.

Isso impediria acesso externo a variavel de qualquer forma exceto pelo método "deposita".

Ja nas classes filhas você impediria o acesso direto a variavel porem permitia sua modificação via método, inserindo algumas regras de negócio.

Em algumas situações a "adaptação tecnica" (mais conhecida como gambiarra) pode ser mais perigosa pois o código pode ficar confuso e gerar bugs.

A vezes é melhor fazer algo mais simples de entender e trabalhar em cima disso para deixar o codigo mais seguro.

Abraço!

Boa noite Saulo, tudo bem?

Ficou com alguma duvida em relação ao assunto?

Abraço!

Olá. Ficou claro. Muito obrigado pela resposta. Eu havia cogitado essa possibilidade de criar um método "setSaldo" como protected antes mesmo de enviar a pergunta. Só queria saber mesmo se não havia uma forma de contornar esse problema sem o "setSaldo". Contudo já aceitei que esse é o caminho mais curto.