Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Imprimir valores

caso eu tire o comentario ele aparece a referencia da memoria. Como faço para imprimir os valores setados , esse codigo aparece um erro na exceução // titularDaConta.setTitular("caio cesar"); // caio.setNome("caio cesar"); // conta.setTitular("caio cesar");

    // System.out.println(titularDaConta.getTitular());
    //System.out.println(caio.getNome());
    //System.out.println(conta.getTitular().getNome());
1 resposta
solução!

Bom dia Caio.

Acredito que o seu código esteja mais ou menos assim:

public class Conta {

        private int agencia;
        private int numero;
        private Cliente titular;
        protected double Saldo;

        public int getNumero() { 
            return this.numero;
        }

        public void setNumero(int numero) { 
            this.numero = numero;
        }

        public int getAgencia() {
            this.agencia;
    }

    public void setAgencia(int agencia){
        this.agencia = agencia;
    }

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

    }

    public Cliente getTitular() {
        return titular;
    }
}
public class Cliente { 
    private String nome; 
    private String cpf; 
    private String profissao; 

    public String getNome() {
        return nome;
    }

    public String getCpf() { 
        return cpf;
    }

    public String getProfissao() { 
        return profissao; 
    }

    public void setProfissao(String profissao) { 
        this.profissao = profissao
    } 
}

Quando você imprime essa linha

System.out.println(titularDaConta.getTitular())

é chamado o método toString padrão da classe Object, onde é impresso o identificador do objeto Cliente na VM(um hash code de identidade do objeto), e não o seu endereço na memória.

toString padrão:

getClass().getName() + '@' + Integer.toHexString(hashCode())

Por isso a saída deve ser algo como:

br.com.bytebank.banco.modelo.Cliente@7852e922

Você pode sobrescrever esse método toString padrão, lá na classe Cliente. Exemplo inserido na classe Cliente:

    public String toString() {
        return "Cliente: "+this.nome+ ", CPF: "+ this.cpf;
    }

Em vez de imprimir o identificador do objeto a partir do toString padrão, é impresso o nome do cliente e o seu CPF.

Cliente: Caio, CPF: 123456

Código no main:

Cliente caio = new Cliente();
caio.setNome("Caio");
caio.setCpf("123456");

Conta contadoCaio = new Conta();
contadoCaio.setNumero(123);
contadoCaio.setAgencia(1234)
contadoCaio.setTitular(caio); //Atribuindo o cliente caio para a Conta conta.

System.out.println(contadoCaio.getTitular());

Também pode chamar o getTitular() da classe Conta e imprimir o nome ou CPF diretamente sem utilizar a implementação de um novo toString:

System.out.println("Nome: "+contadoCaio.getTitular().getNome()+", CPF: "+contadoCaio.getTitular().getCpf());

Aqui quando chama o getTitular() é apontado para o objeto Cliente que foi setado para a contadoCaio, por isso podemos imprimir o seu nome e CPF.

Sua outra dúvida é referente a um erro de compilação para o código abaixo:

titularDaConta.setTitular("caio cesar"); 
// caio.setNome("caio cesar"); 
// conta.setTitular("caio cesar");

Na primeira e terceira linha você está colocando uma String para o titular, o correto seria passar a referência de um objeto Cliente criado, pois lendo o exercício sua classe Conta deve receber uma referência a um objeto da classe Cliente.

public class Conta {

        private int agencia;
        private int numero;
        private Cliente titular; //  <<<<<

Então o correto seria:

Cliente caio = new Cliente();
 caio.setNome("Caio");
 caio.setCpf("123456");

 Conta conta = new Conta();
 conta.setNumero(123);
 conta.setAgencia(1234)

 conta.setTitular(caio); // <<<<< Setando o cliente para a Conta conta usando a referência do objeto Cliente criado. O nome entre aspas você coloca no nome do Cliente, que é do tipo String.