Dúvida relacionada a controle de fluxo

6 respostas
D

Saudações à todos!

Abaixo estou com uma dúvida que me apareceu ao mexer com um método da classe abaixo:

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

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

[]'s

6 Respostas

sf.marcius

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

M

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

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

M

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

++

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!
sf.marcius
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:
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...

tem que ajustar isso tbém. :)

[]s

Criado 7 de janeiro de 2009
Ultima resposta 7 de jan. de 2009
Respostas 6
Participantes 3