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

Criação de construtor que "seta" variável-objeto privada

public Conta(int agencia, int saldo, Conta titular, Cliente novoTitular) {
         Conta.total++;

        **Parte do codigo que não compila**
         titular.setTitular(novoTitular);
        **Parte do codigo que não compila**

         System.out.println("O número de contas agora é: " + total);    
         this.agencia = agencia;    
         this.saldo = saldo;

         System.out.println("sua agencia é: " + this.agencia);
         System.out.println("seu saldo é: " + this.saldo);
     }

Para "setar" uma instância do tipo objeto privada requer uma série de procedimentos, como criar um objeto de cada classe e fazer um ser parâmetro do outro em um método "set" para poder ter acesso aos seus recursos. Gostaria de fazer isso de modo automático mas não consigo, alguém saberia como resolver ?

3 respostas
solução!

Olá Thiago,

Supondo que você já tenha uma classe Cliente, para que possa usá-la em outra classe é necessário sempre criar o objeto usando o new. Nesse caso, seu código ficaria assim:

public Conta(int agencia, int saldo, String nome, String profissao, String cpf) {
         Conta.total++;

        //Criando o cliente
        Cliente titular = new Cliente();
        titular.setNome(nome);
        titular.setProfissao(profissao);
        titular.setCpf(cpf);

        //Usando o cliente
        setTitular(titular);

         System.out.println("O número de contas agora é: " + total);    
         this.agencia = agencia;    
         this.saldo = saldo;

         System.out.println("sua agencia é: " + this.agencia);
         System.out.println("seu saldo é: " + this.saldo);
     }

Veja que o seu construtor precisará de mais parâmetros para que possa, dentro dele, criar o titular e usá-lo no método setTitular();

Outro ponto importante é quanto a restrição do método setTitular(); Como você vai utilizá-lo dentro do construtor, ele não precisa ser mais público:

private void setTitular(Cliente titular) {
        this.titular = titular;
    }

Abraços

Na classe Banco você tem um campo titular correto? algo

private String titular;

no construtor da classe banco você pode referenciar o mesmo por

this.setTitular(novaTitular);

e nos parâmetros passados para o construtor você pode remover o banco, não faz muito sentido você passar um banco para um banco.

public Conta(int agencia, int saldo, Cliente novoTitular) {

no setTitular da classe banco você adiciona um parâmetro para o set que recebe agora um cliente.

    public void setTitular(Cliente novoTitular) {
        this.titular = novoTitular.getTitular();
    }

então você pega esse novoTitular e pega o titular dele.

Lembrando que na classe Cliente você precisa ter também um campo titular e ter o get do mesmo.

No main você pode fazer um teste

    public static void main(String[] args) {

        Cliente cliente = new Cliente();

        cliente.setTitular("Lucas");

        Conta conta = new Conta(10, 10,  cliente);

        System.out.println(conta.getTitular());
        System.out.println(conta.getTotal());


    }

Espero que tenha entendido sua pergunta, qualquer coisa estou ai para ajudar.

Opa, acabei de ler a resposta do MARCONDES CUNHA ARAUJO e o que ele propôs ai faz mais sentido, não havia entendido realmente o que você tinha dito kkk, desculpa :(