Dúvida para atribuir valor a um atributo do tipo String

11 respostas Resolvido
programaçãostringjava
A

Olá,

É 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!

11 Respostas

S

Seu atributo titular deveria ser do tipo Cliente e não do tipo String.

A

Obrigada pela rapidez na resposta, vou tentar da forma como você falou.

A

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.

Obrigada, staroski!

R
Solucao aceita

private double saldo = 0; :face_with_raised_eyebrow:

A

Rodrigo, o comentário foi sem querer, mas obrigada, já tirou minha dúvida, rs, vou fazer isso.:wink:

A

Neste mesmo caso, o titular aceita que tipo de valor? Por exemplo, se eu criar um construtor:

public Conta(Cliente titular){

this.titular = titular;

}

e quiser atribuir um valor ao argumento do construtor, o que devo usar? Coloquei uma String “Maria”, mas dá um erro:

Error:(48, 30) java: incompatible types: java.lang.String cannot be converted to com.company.Cliente.

Há algum valor válido que eu possa passar nesse caso? O que estou fazendo quando eu coloco o argumento Cliente titular no meu construtor? Obrigada.

M

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);
S

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.

A

Mike, obrigada pela resposta, mas acho que não fui muito clara. Eu consigo fazer essa parte que você mencionou:

Cliente titular = new Cliente();

titular.nome = Maria;

//outros atributos

O problema é que eu queria criar a conta e já atribuir um valor ao argumento Cliente titular do construtor, foi nesse momento que deu o erro.

Mas vou tentar fazer pensando no que o staroski indicou. Caso eu não tenha entendido o que você quis dizer, desculpa.

A

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:

public class Cliente {

String nome;
String sobrenome;
String cpf;

public void mudaCPF(String cpf){
    validaCPF(cpf);
    this.cpf = cpf;
}

private void validaCPF(String cpf){

}

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?

R

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;
}
Criado 26 de fevereiro de 2018
Ultima resposta 27 de fev. de 2018
Respostas 11
Participantes 4