Como substituir o .this ?

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!

E aí parceiro, tranquilo?
Recomendo que coloque o seu código dentro das tags de texto pré-formatado, basta selecionar os trechos de código e apertar ctrl+shift+c, assim ficará mais fácil para ler cada trecho.

Abraço.

Valeu pelo conselho! Já consertei.

Tá, você tem uma classe e seus respectivos atributos.
Aí, ao invés de criar os métodos na própria classe, você pretende criar mais 3 classes para acessar os atributos dela?
Isso não faz sentido, você está segregando o que não deveria ser segregado.
Poderia explicar o motivo de montar uma estrutura tão estranha?

Oi. Obrigado pela resposta. Então você considera que é melhor sempre manter os métodos na mesma classe que os atributos?

Com toda a certeza desse planeta, cara. Quando você monta uma classe, você coloca os atributos dela (“o que ela tem” ou “características dela”) e os métodos (“o que ela deve fazer” ou “comportamentos da classe”, sendo esse último muito controverso).

1 curtida

Se você não fizer dessa forma, será obrigado a aumentar a visibilidade dos atributos de forma que sejam acessíveis pelas outras classes, ou seja, estará jogando no lixo o conceito de encapsulamento.

Não está claro pra mim o que exatamente você quer fazer e porquê quer fazer dessa forma.