Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Conta Bancária com Cliente (Pessoa Física e Jurídica)

Evoluindo no conteúdo da aula, não estou conseguindo resolver a seguinte questão:

Sempre que tenho instância uma conta bancária não consigo saber quem é o objeto dono da classe, por exemplo em uma classe Teste (Main) com o código abaixo:

Cliente pessoaFisica = new PessoaFisica("Carlos", "XXX.XXX.XXX-ZZ");

ContaBancaria contaBancaria = new ContaBancaria(pessoaFisica);

Imprimindo no console o objeto contaBancaria a resposta é ContaBancaria.

Alguém sabe o que tenho que mudar nos contrutores para que a resposta morte o dono da conta, que no caso exemplificado é pessoaFisica ???

public class ContaBancaria {

    private int saldo;
    private Cliente cliente;
    private int id;
    private static int contador;

    // contrutor
    public ContaBancaria(Cliente cliente) {
        id = ContaBancaria.contador++;
        this.cliente = cliente;
    }

    // métodos
    public int depositar(int valorDeposito) {
        if (valorDeposito > 0) {
            this.saldo = this.saldo + valorDeposito;
            return this.saldo;
        } else {
            return this.saldo;
        }
    }

    public int sacar(int valorSaque) {
        if (this.saldo >= valorSaque) {
            this.saldo = this.saldo - valorSaque;
            return this.saldo;
        } else {
            return this.saldo;
        }
    }

    // getter and setter
    public Cliente getCliente() {
        return cliente;
    }

    public int getSaldo() {
        return saldo;
    }

    public int getId() {
        return id;
    }

    // conta a quantidade de contas instânciadas
    public static int getContador() {
        return ContaBancaria.contador;
    }
}

/////////////////////////////////////////////////////////////////////////

public abstract class Cliente {

        private String nome;

    // construtor
    protected Cliente(String nome) {
        this.nome = nome;
    }

    // getter
    public String getNome() {
        return nome;
    }
}

/////////////////////////////////////////////////////////////////////////
public class PessoaFisica extends Cliente{

    private String cpf;

    // Contrutor
    public PessoaFisica(String nome, String cpf) {
        super(nome);
        this.cpf = cpf;
    }

    // getter and setter
    public String getCpf() {
        return cpf;
    }
}

/////////////////////////////////////////////////////////////////////////

public abstract class Cliente {

    private String nome;

    // construtor
    protected Cliente(String nome) {
        this.nome = nome;
    }

    // getter and setter
    public String getNome() {
        return nome;
    }
}
2 respostas
solução!

Boa noite Tiago!

Você precisa sobrescrever o método toString da classe Object na sua classe conta bancária.

Segue um exemplo, aqui só irá exibir no console o nome do cliente, você pode adicionar outros atributos.

    @Override
    public String toString() {
        return cliente.getNome();
    }

Espero ter ajudado, abraço.

Obrigado, Gabriel!