Duvidas com Construtores Explicitos!

4 respostas
Rezende

Fala galera, estou aqui de novo, com mais uma duvida, estou avançando de capitulo, porem cada vez mais surgem duvidas, gostaria novamente do apoio da galera do forum, pra tentar me explicar onde estou em duvida !
O problema é o seguinte:

Construar uma aplicação que instancie 1 objeto Conta e execute as seguintes opções:
0. Sair
1. Ver o saldo
2. Saque, se valor do saque maior que o saldo, imprimir Saldo Insuficiente
3. Depósito
4. Imprimir dados da conta

Os dados do objeto Conta (Atributos) devem sem digitados pelo usuário. Esse exercício possui 2 classes: Conta e AppConta

pois bem aqui esta minha classe:
public class Conta {
    
    private String cliente;
    private double saldo;
    private int numeroConta;

    public Conta (int numeroConta)
    {
        setNumeroConta(numeroConta);
    }
    public int getNumeroConta()
    {
        return numeroConta;
    }
    public void setNumeroConta(int numeroConta)
    {
        this.numeroConta = numeroConta;
    }
    public String getCliente()
    {
        return cliente;
    }
    public void setCliente(String cliente)
    {
        this.cliente = cliente;
    }
    public double getSaldo()
    {
        return saldo;
    }
    public void depositar(double valor)
    {
        this.saldo += valor;
    }
   public boolean sacar(double valor)
    { 
        if(valor > 0) 
        { 
             if(valor <= saldo)
            { 
            saldo -= valor; 
            return true; 
            } 
             else 
            { 
            return false; 
             } 
        } 
        else 
        { 
            return false; 
        } 
    } 
    public String toString()
    {
        return "Cliente: " + cliente + "Numero da conta: " + numeroConta + "Saldo: " + saldo;
    }
}

como irei declarar o numero da conta, o nome do cliente e o saldo ?

estava pensando em algo assim:

Conta c1 = new Conta(Integer.parseInt(JOptionPane.showInputDialog("Numero da conta")));

porem, não consigo passar disso, não estou achando solução, se alguem tiver uma ideia,

Abraços !

4 Respostas

rmendes08

É simples, você pode ler os dados em variáveis locais e depois chamar os métodos seter de cada propriedade, passando as variáveis, ou então, você pode declarar um construtor que receba todos os dados da conta. Particularmente eu prefiro ler cada digitação em uma variável separada e chamar o seter de cada propriedade.

Rezende

Então nesse problema eu devo fazer por construtores, porem a classe eu não posso mexer mais, somente na Main.

rmendes08

Se você não pode alterar a classe então a sua única alternativa é passar através dos métodos set.

Rezende

Então galera, consegui achar o codigo, porem não esta fazendo a operação direito

aqui esta meu codigo:
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    Conta c1 = new Conta(Integer.parseInt(JOptionPane.showInputDialog("Conta")));
    int menu=1;
    double resp,valor;
    c1.setCliente (JOptionPane.showInputDialog("Cliente"));
    c1.depositar(Double.parseDouble(JOptionPane.showInputDialog("Saldo inicial")));


    while(menu!=0)
   {
    menu= Integer.parseInt(JOptionPane.showInputDialog("Menu"));

    if( menu==1)
    {
    System.out.println(c1.getSaldo());
    }
        else if( menu==2)
        {
        valor= Double.parseDouble(JOptionPane.showInputDialog("Valor do saque"));
            if(valor>0)
            {
              if(c1.sacar(valor) == false)
                {
                    System.out.println("Saldo Insuficiente");
                }
            }
        }
            else if( menu==3)
            {
             valor= Double.parseDouble(JOptionPane.showInputDialog("O valor do deposito"));
             c1.depositar(valor);
            }
            else if( menu==4)
            {
                 System.out.println(c1);
            }
  }
  }
}
aqui a classe:
public class Conta {
    
    private String cliente;
    private double saldo;
    private int numeroConta;

    public Conta (int numeroConta)
    {
        setNumeroConta(numeroConta);
    }
    public int getNumeroConta()
    {
        return numeroConta;
    }
    public void setNumeroConta(int numeroConta)
    {
        this.numeroConta = numeroConta;
    }
    public String getCliente()
    {
        return cliente;
    }
    public void setCliente(String cliente)
    {
        this.cliente = cliente;
    }
    public double getSaldo()
    {
        return saldo;
    }
    public void depositar(double valor)
    {
        this.saldo += valor;
    }
   public boolean sacar(double valor)
    { 
        if(valor > 0) 
        { 
             if(valor <= saldo)
            { 
            saldo -= valor; 
            return true; 
            } 
             else 
            { 
            return false; 
             } 
        } 
        else 
        { 
            return false; 
        } 
    } 
    public String toString()
    {
        return "Cliente: " + cliente + "Numero da conta: " + numeroConta + "Saldo: " + saldo;
    }
}

Se eu faço a operação:
Conta : 1
Cliente: Rezende
Saldo inicial: 100

depois coloco um deposito de mais 200 ele mostra o resultado como 100 !!
oque esta errado no meu codigo, se souberem me expliquem !

porem não posso mexer na classe Conta, pois ela já esta correta.
Abraços !!

Criado 30 de abril de 2011
Ultima resposta 7 de mai. de 2011
Respostas 4
Participantes 2