forçar usuario a não sacar alem do limite (duvida)

10 respostas
K

minha duvida e o seguinte, como posso fazer para que o usuário não possa sacar mais do que o limite, sei quem tem haver com a condição se, mais tem outra forma de fazer! tipo um usuario ter um limite de tentativas de sacar ate que ele seja bloqueado.

public class conta {
	//classe conta especifica que todo objeto da classe deve ter //				
	//atributos da classe conta //
	int numero;
	String nome;
	double saldo;
	double limite;
	
	
		public static void main(String args[]){
	
		new conta();
		
		conta minhaconta;
		
		minhaconta = new conta();
		
		
		minhaconta.nome = "fernando";
		minhaconta.saldo= (10000.0);
		minhaconta.limite=(20000.0);
		System.out.println("saldo fernando"+minhaconta.saldo);
		System.out.println("Limite fernando"+minhaconta.limite);
		
		obrigado.

		
}

}

10 Respostas

Lavieri

Não acesse os dados diretamente, use um método para isso...
o ideal é vc encapsular os dados, encapsular é tornar invisivel e inalterado para quem não conhece o funcionamento da sua classe os campos dela...

vc passaria a colocar private antes dos seus campos...

.........

para modificar o saldo que tal um

public void depositar(double valor) {
   this.saldo += valor;
}

public void sacar(double valor) {
   this.saldo -= valor;
}

agora vc precisa pensar que pra sacar, é necessario verifica ro saldo... então vc poderia ter algo como

if (bloqueado())
   return;

if(saldo - valor < 0)
   falhar();
else {
   this.saldo -= valor;
   sucesso();
}

esse metado falhar... pode simplismente incrementar um contador que parte de zero... assim a cada falhar vc sobe 1 valor... ai vc pode a cada sucesso zerar o contador...
o seu método bloqueado() seria um boolean simples, que verifica se contadorFalha > 3 ....

e pode fazer um método desbloquearConta(String senha) ... para zerar o contador quando a conta é bloqueada...

pronto ja dei muita dica... agora tenta fazer ^^ boa sorte

edu_merckx

Como o Lavieri disse, use métodos. Neles você implementa as restrições.

K

vlz amanha de manha eu vou tentar e passo no forum.

obrigado pela ajuda.!

K

esqueci,como faço para que o usuario entre com os dados?

Lavieri

kerbage:
esqueci,como faço para que o usuario entre com os dados?

visualmente? String input = JOptionPane.showInputDialog(null,"Digita um valor ...");

via console… busca no google [google]java util Scanner sun[/google]

Edit.: prevendo que vc va perguntar… assim que transforma de String para Integer … int valor = Integer.parseInt(string);

K
import javax.swing.JOptionPane;


public class conta {
	//classe conta especifica que todo objeto da classe deve ter //				
	//atributos da classe conta //
	int numero;
	String nome;
	private double saldo;
	private double limite;
	private double valor;
    private double sacar;
	
	
	
	
	void depositar (double saldo){
	 	this.saldo += valor;
	
				if ( this.saldo + valor > 0 ){
					
				System.out.println("Ótimo");	
				valor = +1;
				}
				
	}
	

	
	   void sacar (double valor){
		
		this.saldo -= valor;
		
 
		if (this.saldo - valor < 0){
			
			System.out.println("cheque especial!");
		
			
			
		}
		{
		
			
		
		}
		 
 }  		   
		public static void main(String args[]){
	
		new conta();
		
		conta minhaconta;
		
		minhaconta = new conta();
		
		String input = JOptionPane.showInputDialog(null,"Digita um valor ..."); 
		
		
		minhaconta.nome = "fernando";
		minhaconta.saldo= (10000.0);
		minhaconta.limite=(20000.0);
		System.out.println("saldo fernando"+minhaconta.saldo);
		System.out.println("Limite fernando"+minhaconta.limite);
		System.out.println("Sacar fernando"+minhaconta.sacar);
		System.out.println("Saldo fernando"+minhaconta.saldo);
		
		
}

}
fiz esse dois metodos, mais não retorna nada void depositar (double saldo){ this.saldo += valor;
if ( this.saldo + valor > 0 ){
					
				System.out.println("Ótimo");	
				valor = +1;
				}
				
	}
	

	
	   void sacar (double valor){
		
		this.saldo -= valor;
		
 
		if (this.saldo - valor < 0){
			
			System.out.println("cheque especial!");
} no caso do metodo depositar,se o cliente estivesse com o saldo + valor acima de 0, ele iria ganhar mais 1 real cada vez que estivesse no positivo,sera que fiz certo?
B

kerbage:

valor = +1;

no caso do metodo depositar,se o cliente estivesse com o saldo + valor acima de 0, ele iria ganhar mais 1 real cada vez que estivesse no positivo, sera que fiz certo?

Não fez certo, você está deixando a conta da pessoa com 1 real.

Há três formas de acrescentar um valor:

valor = valor + 1;

valor += 1;

valor++;

este último acrescenta somente 1.

K

pobre do cliente! entao como estava fazendo ele ia ficar com 1 real! e no caso do metodo sacar! porque não aparece nada.

obrigado

K

eu axo que vc poderia criar um Atributo limiteSaque = 3;
e fazer uma logica pra ir diminuindo conforme os saques o mesmo vale para a qntidade de dinheiro que pode ser sacado no dia.

peczenyj

Eu aprendi muito lendo este artigo:

http://blog.caelum.com.br/2006/09/14/nao-aprender-oo-getters-e-setters/

Deve responder algumas de suas duvidas. Se vc tentar fazer uns testes unitarios então, fica melhor ainda.

Criado 18 de março de 2009
Ultima resposta 20 de mar. de 2009
Respostas 10
Participantes 6