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

Associação

Quando incluimos o tipo da classe Cliente em titular, na classe Conta. Como o java sabe em qual atributo ele está referenciando, sendo que na classe cliente existe mais de 1 atributo?

Classe Conta

public class Conta {

double saldo; int numeroConta; int numeroAgencia; Cliente titular;

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

public boolean saca(double valor) { if (this.saldo >= valor) { this.saldo -= valor; return true; } else return false; }

public boolean transfere(double valor, Conta destino) { if (this.saldo >= valor) { saca(valor); destino.deposita(valor); return true; } else { return false; } }

}

public class Cliente {

String nome; String cpf; String profissao;

}

3 respostas

Na verdade, ao definir um atributo da classe Cliente na classe Conta, você cria uma referência em Conta para Cliente. Ou seja, toda conta tem um cliente associado a ela.

Essa referência não se dá a um atributo específico de Cliente, mas sim a um objeto, do tipo Cliente, que contém nome, cpf e profissão.

Entendi. A referencia da classe cliente na classe conta é no objeto e não apenas no atributo. Eu poderia acessar o atributo do objeto Cliente, na classe conta. Por exemplo.

public class Conta {

double saldo; int numeroConta; int numeroAgencia; Cliente titular; Cliente cpf; }

Agora dessa forma eu tenho como referenciar o atributo CPF da classe Cliente. Seria isso?

Obrigado pela ajuda ;)

solução!

Na verdade, não. Para acessar os atributos do objeto Cliente existem algumas formas mas não precisa definir outros Clientes para isso.

Pelo código que você enviou não há uso de modificadores de acesso nos atributos. Então para acessá-los na classe Conta faria "titular.[nome do atributo]". Segue exemplo para exibir o nome do titular.

public class Conta {
    Cliente titular;

    public void nomeDoTitular() {
        System.out.println(titular.nome);
    }
}

Mais para frente você irá aprender sobre modificadores de acesso e métodos getters e setters e será um pouco diferente a forma de acessar os atributos.

Por enquanto, é importante você saber que não é necessário definir mais de um atributo Cliente para acessar nome, cpf e profissao.

Ao definir um atributo da classe Cliente em Conta é como se Conta tivesse os seguintes atributos:

public class Conta {
    Double saldo;
    int numeroConta;
    int numeroAgencia;
    String nomeDoTitular;
    String cpfDoTitular;
    String profissaoDoTitular;

    //resto da classe
}

Mas por não serem atributos específicos de uma conta faz mais sentido separar esses atributos em outra classe (Cliente), de modo a melhorar legibilidade e permitir que no futuro você possa criar métodos específicos para Cliente sem se preocupar com Conta e vice-versa.