Abaixo estou com uma dúvida que me apareceu ao mexer com um método da classe abaixo:
//Imaginemos uma classe Conta como abaixo:classConta{privatedoublelimite;privatedoublesaldo;/*Aqui reside minha dúvida, nesse teste realizado pelo if só poderei utilizar o método saque quando o valor for menor ou igual ao limite + saldo, mas na verdade eu fiquei pensando que dessa forma não iremos não iremos mexer com o limite mesmo utilizando ele! Como eu poderia modificar esse método para atualizar o valor do limite?*/publicvoidsaque(doublevalor){if(limite+saldo>=valor){this.saldo=this.saldo-valor;}}publicvoidcolocaSaldo(doublevalor){if(valor>0){saldo=valor;}else{System.out.println("Não associo valor negativo!");}}publicvoidcolocaLimite(doublevalor){if(valor>=0){limite=valor;}else{System.out.println("Não se pode ter limites negativos!");}}}
publicvoidsaque(doublevalor){// se o saldo for suficiente para o saque...if(saldo>valor){this.saldo=this.saldo-valor;// senao, se o saldo + limite for suficiente para o saque...}elseif((limite+saldo)>=valor){this.limite=(this.saldo+this.limite)-valor;this.saldo=0;// senao, bad bad acount... no donut for you... :)}else{System.out.println("Trabalhe e ganhe mais dinheiro!");}}
[]s
M
marcobiscaro2112
Mas o limite não precisa ser alterado.
Se determinado cliente tem R$ 50 depositados e limite de R$ 100, pode sacar até R$ 150. Se isso for feito, o saldo será R$ -100 (e o limite continua como estava). Se ele tentar sacar qualquer valor agora, não conseguirá.
D
Delita
Isso mesmo, sou muito fã de FFT. obrigado à todos pela pronta resposta!
[]'s
sf.marcius
realmente, como o colega marcobiscaro2112 falou, nao precisava alterar o limite. fica até mais simples.
também recomendo a utilização de nomes padroes para os accessor methods… setLimite() em vez de colocaLimite() e setSaldo() em vez de colocaSaldo(); e se possível, usa BigDecimal pra evitar problemas de precisão, ja que vc vai fazer calculos financeiros…
[]s
M
marcobiscaro2112
sf.marcius:
realmente, como o colega marcobiscaro2112 falou, nao precisava alterar o limite. fica até mais simples.
também recomendo a utilização de nomes padroes para os accessor methods… setLimite() em vez de colocaLimite() e setSaldo() em vez de colocaSaldo(); e se possível, usa BigDecimal pra evitar problemas de precisão, ja que vc vai fazer calculos financeiros…
[]s
++
Só não concordo com o ‘setSaldo’.
Métodos ‘saca’ e ‘deposita’ ficam mais naturais. Veja:
Contaconta1=newConta();conta1.setSaldo(500.0);// razoavelconta1.setSaldo(374.72);// quanto o cliente sacou???
realmente, como o colega marcobiscaro2112 falou, nao precisava alterar o limite. fica até mais simples. :)
também recomendo a utilização de nomes padroes para os accessor methods... setLimite() em vez de colocaLimite() e setSaldo() em vez de colocaSaldo(); e se possível, usa BigDecimal pra evitar problemas de precisão, ja que vc vai fazer calculos financeiros...
[]s
++
Só não concordo com o 'setSaldo'.
Métodos 'saca' e 'deposita' ficam mais naturais. Veja:
Conta conta1 = new Conta();
conta1.setSaldo(500.0); // razoavel
conta1.setSaldo(374.72); // quanto o cliente sacou???
Seria mais natural:
Conta conta1 = new Conta();
conta1.deposita(500.0);
conta1.saca(125.28); // agora sabemos!
sim... concordo contigo :)
raciocinei pensando em setSaldo() pq ele faz
this.saldo = valor;
ou seja, seta (sobrescreve) o valor diretaço...
em vez de
this.saldo = this.saldo + valor;
que deposita (incrementa) o valor no saldo corrente...