Abaixo estou com uma dúvida que me apareceu ao mexer com um método da classe abaixo:
[code]//Imaginemos uma classe Conta como abaixo:
class Conta {
private double limite;
private double saldo;
/*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?*/
public void saque (double valor){
if (limite+saldo >= valor){
this.saldo = this.saldo - valor;
}
}
public void colocaSaldo (double valor){
if (valor > 0){
saldo = valor;
}else{
System.out.println ("Não associo valor negativo!");
}
}
public void colocaLimite (double valor){
if (valor >= 0){
limite = valor;
}else{
System.out.println ("Não se pode ter limites negativos!");
}
}
public void saque(double valor)
{
// 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...
} else if ((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!");
}
}
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á.
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…
[quote=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[/quote]++
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!
[quote=marcobiscaro2112][quote=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[/quote]++
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???