Dúvida relacionada a controle de fluxo

Saudações à todos!

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!");
	}
}

}[/code]

Desde já agradeço à todos pela atenção e ajuda!

[]'s

Delita? vc é fã de Final Fantasy Tactics? hehe

basicamente é isso:

    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!");
        }
    }

[]s

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á.

Isso mesmo, sou muito fã de FFT. obrigado à todos pela pronta resposta!

[]'s

realmente, como o colega marcobiscaro2112 falou, nao precisava alterar o limite. fica até mais simples. :slight_smile:

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=sf.marcius]realmente, como o colega marcobiscaro2112 falou, nao precisava alterar o limite. fica até mais simples. :slight_smile:

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. :slight_smile:

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:

[code]
Conta conta1 = new Conta();

conta1.deposita(500.0);

conta1.saca(125.28); // agora sabemos!
[/code][/quote]

sim… concordo contigo :slight_smile:

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…

tem que ajustar isso tbém. :slight_smile:

[]s