É a primeira vez que publico no fórum, portanto, caso esteja fazendo algo errado, corrijam-me. Sou uma curiosa em Java, ainda tenho dificuldades com os termos usados (corrijam isto também, se necessário), e estou iniciando meus estudos agora com a apostila da Caelum.
Minha dúvida: tenho uma classe Conta e uma Cliente. Na classe Cliente tenho os seguintes atributos:
public class Cliente {
String nome;
String sobrenome;
String cpf;
Já na minha classe Conta, tenho:
public class Conta {
int numeroConta;
String agencia;
private double saldo;
Data dataAbertura;
String titular;
Porém, no meu atributo titular, eu gostaria que fossem usados os valores dos atributos “nome” + “sobrenome”, é possível? Sendo possível, é recomendável ou teria uma melhor prática para fazê-lo? Obrigada!
Só para deixar o resultado, caso alguém queira saber também (ou sugerir alguma outra forma), criei o titular do tipo Cliente:
public class Conta {
int numeroConta;
String agencia;
private double saldo; //quero inicializar o saldo apenas pelo deposita, como fazer?
Data dataAbertura;
Cliente titular= new Cliente();
e criei um método na classe Cliente que retorna o nome e o sobrenome:
public class Cliente {
String nome;
String sobrenome;
String cpf;
public String titularConta(){
return nome + " " + sobrenome;
}
Correção: meu método não adiantou nada para o que eu queria. Na verdade, criar Cliente titular, tornou possível que eu referenciasse uma conta a um cliente específico, podendo acessá-lo através do .titular, aí consegui imprimir usando titular.nome + titular.sobrenome, desculpem a confusão.
O parametro é do tipo Cliente, logo você tem que passar um objeto cliente
Cliente titular = new Cliente();
titular.nome = "Maria";
//outros atributos
Conta conta = new Conta(titular);
//Para saber o nome do titular da conta
System.out.println(conta.titular.nome);
Esse método deveria pertencer a classe Conta e deveria retornar o objeto do tipo Cliente.
Deve usar um parâmetro do tipo Cliente e esse parâmetro você utiliza para inicializar o atributo titular.
Você não deve fazer new Titular dentro da classe Conta.
Eu estava fazendo uma grande confusão, usando um construtor Conta na classe Cliente, nunca ia dar certo, mas agora as coisas começaram a ficar um pouco mais claras.
Entendi o que você disse sobre o construtor, eu peguei um cliente e atribuí ao atributo titular e consegui entender o que eu estava fazendo, obrigada.
Já percebi que você gosta de fazer a gente pensar ao invés de dar a resposta pronta, isso é ótimo, fico quebrando a cabeça até entender o que você disse e fazer certo, mas tem hora que não saio do outro lado.
Quando você diz “Esse método deveria pertencer a classe Conta e deveria retornar o objeto do tipo Cliente.”, isso quer dizer que eu tenho de criar um outro atributo do tipo Cliente, certo? Minha classe Cliente hoje está assim:
Esse método ficando na classe Conta e retornando esse objeto serviria para quê? Inicialmente, eu queria que a variável titular retornasse o nome + sobrenome do cliente, mas eu estava errada, titular é apenas uma forma de referenciar a conta a um cliente, correto? Dessa forma eu ainda preciso desse método?
Não, como você declarou um Cliente dentro de Conta, esse cliente está atrelado a essa conta e você vai conseguir acessa-lo através dessa conta, dito isso, ele se torna um atributo de conta, como agencia ou saldo e da mesma forma que você fez para chamar esses atributos da conta, você deve fazer com o atributo cliente.
Por exemplo:
class Conta {
Cliente x;
public Cliente retornaCliente() {
return x;
}