Ola! Sou iniciante e em uma das minhas praticas, na qual estou desenvolvendo um fictício sistema de um banco, ocorreu o seguinte:
Antes eu tinha vários getters dentro de minha classe principal. Ai decidi criar uma classe só para eles. O problema é que uso em seguinte padrão de código:
public String getNome() {
return this.titular.nome;
Percebi que o que está gerando a falha é o this, pois o atributo nome do objeto titular está em outra classe.
Esta é a classe que utilizo para os dados do cliente. Nela estão os atributos do titular.
package cliente;
import java.util.Scanner;
public class DadosCliente {
Scanner sc = new Scanner(System.in);
public String nome;
public String sobrenome;
public int idade;
public String cpf;
//String criada para evitar falha no setTitular
public String stop;
public EnderecoCliente lugar = new EnderecoCliente();
}
Esta é a classe que utilizo para criar a conta. Estou tentando reparti-la em várias classes menores. Pretendo criar uma classe só pros getters outras só pros setters e uma só para os outros métodos. Apesar dos getters, setters e métodos ainda estarem aí, a minha intensão é retira-los, por isso que estou passando por esse problema.
package metodos;
import cliente.DadosCliente;
import java.util.Scanner;
public class CriarConta {
Scanner sc = new Scanner(System.in);
//ATRIBUTOS
protected DadosCliente titular = new DadosCliente();
protected int numero;
protected double saldo;
protected double salario;
private static int totalContas;
// CONSTRUTOR
public CriarConta() {
this.setTitular();
this.setEndereco();
this.setNumero();
}
// SETTER NUMERO
public void setNumero() {
CriarConta.totalContas += 1;
this.numero = CriarConta.totalContas;
System.out.println("\nO número da sua conta é:" + CriarConta.totalContas);
}
//SETTERS TITULAR
public void setTitular() {
this.setNome();
this.setSobrenome();
this.setIdade();
this.setStop();
this.setCpf();
}
public void setNome() {
System.out.println("Qual o seu primeiro nome?");
this.titular.nome = sc.nextLine();
}
public void setSobrenome() {
System.out.println("Qual o seu sobrenome?");
this.titular.sobrenome = sc.nextLine();
}
public void setIdade() {
System.out.println("Qual a sua idade?");
this.titular.idade = sc.nextInt();
}
public void setCpf() {
System.out.println("Qual o seu CPF?");
this.titular.cpf = sc.nextLine();
}
// SETTERS TITULAR ENDEREÇO
public void setEndereco() {
System.out.println("\nEndereço");
this.setCep();
this.setEstado();
this.setCidade();
this.setBairro();
this.setRua();
this.setComplemento();
}
public void setCep() {
System.out.println("Qual o seu CEP?");
this.titular.lugar.cep = sc.nextLine();
}
public void setEstado() {
System.out.println("Qual o estado em que você reside?");
this.titular.lugar.estado = sc.nextLine();
}
public void setCidade() {
System.out.println("Qual a cidade em que você mora?");
this.titular.lugar.cidade = sc.nextLine();
}
public void setBairro() {
System.out.println("Qual o bairro?");
this.titular.lugar.bairro = sc.nextLine();
}
public void setRua() {
System.out.println("Qual a rua?");
this.titular.lugar.rua = sc.nextLine();
}
public void setComplemento() {
System.out.println("Qual o complemento?");
this.titular.lugar.complemento = sc.nextLine();
}
//*SETTER PARA CORRIGIR ERRO NO CRIAR CONTA/SET TUDO
public void setStop() {
System.out.print("");
this.titular.stop = sc.nextLine();
}
// GETTER TOTAL DE CONTAS
public static int getTotalContas() {
return CriarConta.totalContas;
}
//GETTER TUDO SOBRE A CONTA
public void getTudo() {
System.out.println("-----------------------------------------------------------------");
System.out.println("Titular:");
this.getTitular();
System.out.println("\nEndereço");
this.getEndereco();
System.out.println("O número da sua conta é:" + this.numero);
}
//GETTER NÚMERO:
public int getNumero() {
return this.numero;
}
//GETTERS TITULAR
public void getTitular() {
System.out.println(this.getNome());
System.out.println(this.getSobrenome());
System.out.println(this.getIdade());
System.out.println(this.getCpf());
}
public String getNome() {
return this.titular.nome;
}
public String getSobrenome() {
return this.titular.sobrenome;
}
public int getIdade() {
return this.titular.idade;
}
public String getCpf() {
return this.titular.cpf;
}
// GETTERS TITULAR ENDEREÇO
public void getEndereco() {
System.out.println(this.getCep());
System.out.println(this.getEstado());
System.out.println(this.getCidade());
System.out.println(this.getBairro());
System.out.println(this.getRua());
System.out.println(this.getComplemento());
}
public String getCep() {
return this.titular.lugar.cep;
}
public String getEstado() {
return this.titular.lugar.estado;
}
public String getCidade() {
return this.titular.lugar.cidade;
}
public String getBairro() {
return this.titular.lugar.bairro;
}
public String getRua() {
return this.titular.lugar.rua;
}
public String getComplemento() {
return this.titular.lugar.complemento;
}
//METODOS:
public void depositar(double quantidade) {
if (quantidade < 0) {
System.out.println("Não é possível fazer depositos em quantias negativas");
} else {
saldo += quantidade;
System.out.println("Deposito feito com sucesso");
}
}
public void sacar(double quantidade) {
if (saldo >= quantidade) {
saldo -= quantidade;
System.out.println("Saque feito com sucesso!");
} else {
System.out.println("Não foi possível realizar o saque.");
}
}
public void consultarSaldo() {
System.out.println(saldo);
}
public void transferir(CriarConta destino, double quantidade) {
if (saldo >= quantidade) {
this.saldo -= quantidade;
destino.saldo += quantidade;
System.out.println("Transferência executada com sucesso!");
} else {
System.out.println("Não foi possível executar a transferência.");
}
}
public void chegouSalario() {
saldo += salario;
}
}
Esta aqui é a classe dos getters. Ela está em processo de criação, pois ainda não consegui finaliza-la por conta do erro do .this`
package metodos;
import metodos.CriarConta;
public class Getters {
//GETTER NÚMERO:
public int getNumero() {
return CriarConta.this.numero;
}
//GETTERS TITULAR
public void getTitular() {
System.out.println(this.getNome());
System.out.println(this.getSobrenome());
System.out.println(this.getIdade());
System.out.println(this.getCpf());
}
public String getNome() {
return this.titular.nome;
}
public String getSobrenome() {
return this.titular.sobrenome;
}
public int getIdade() {
return this.titular.idade;
}
public String getCpf() {
return this.titular.cpf;
}
// GETTERS TITULAR ENDEREÇO
public void getEndereco() {
System.out.println(this.getCep());
System.out.println(this.getEstado());
System.out.println(this.getCidade());
System.out.println(this.getBairro());
System.out.println(this.getRua());
System.out.println(this.getComplemento());
}
public String getCep() {
return this.titular.lugar.cep;
}
public String getEstado() {
return this.titular.lugar.estado;
}
public String getCidade() {
return this.titular.lugar.cidade;
}
public String getBairro() {
return this.titular.lugar.bairro;
}
public String getRua() {
return this.titular.lugar.rua;
}
public String getComplemento() {
return this.titular.lugar.complemento;
}
}
Se tiverem outros comentários sobre o código, além da da resolução do meu problema, eu ficaria muito feliz em ouvir. Obrigado pelo apoio!