1
resposta

Validadação de dados dentro da classe

Gostaria de tirar uma dúvida quanto a validação de dados dentro da Classe "Cliente".

Estou criando um código de cadastro de cliente para praticar o conteúdo abordado.

Na classe "Cliente" eu criei um método para validação das informações adicionadas pela classe "Cadastro", porém gostaria de uma dica, na validação que eu criei eu gostaria que ela validasse novamente se as informações estão corretas após serem alteradas. Qual a melhor maneira de fazer isto?

Classe "Cliente"



public class Cliente {

    private String nome;
    private String cpf;
    private String telefone;
    private Endereco endereco = new Endereco();
    private String dadosCorretos;


    public Cliente(String nome) {
        this.nome = nome;
        //System.out.println("Conta Criada com sucesso!!");
        }
    public String getCpf() {
        return cpf;
    }
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    public String getNome() {
        return nome;
    }
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
    public String getTelefone() {
        return telefone;
    }
    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }
    public Endereco getEndereco() {
        return endereco;
    }
    public void setNome(String novoNome) {
        this.nome = novoNome;
    }
    /*public String retornaDados() {

        System.out.println();
        System.out.println("Nome: " + this.getNome());
        System.out.println("CPF: " + this.getCpf());
        System.out.println("Telefone: " + this.getTelefone());
        System.out.println();
        System.out.println("Endereço");
        System.out.println("Rua: " + this.getEndereco().getRua());
        System.out.println("Numero: " + this.getEndereco().getNumero());
        System.out.println("Bairro: " + this.getEndereco().getBairro());

    }*/
     public void setDadosCorretos(String dadosCorretos) {
        this.dadosCorretos = dadosCorretos;
    }



    public boolean validacaoDeDados () {


        if (dadosCorretos == "s") {

            System.out.println();
            System.out.println("CADASTRO REALIZADO COM SUCESSO!!");
            return true;
        }
        else {

            System.out.println();
            System.out.println("O que deseja alterar?"
                    + "\n 1 - Nome"
                    + "\n 2 - CFP"
                    + "\n 3 - Telefone"
                    + "\n 4 - Rua"
                    + "\n 5 - Número"
                    + "\n 6 - Bairro");
            int caso = 6;
            switch (caso) {
            case 1:
                //System.out.print("Digite o nome do cliente");
                String novoNome = "José Hélio dos Reis";            
                this.setNome(novoNome);
                break;
            case 2: 
                //System.out.println("Digite o CPF");
                String novoCpf = "123.456.789-89";
                this.setCpf(novoCpf);
                break;
            case 3:
                //System.out.println("Digite o telefone");
                String novoTelefone = "(12) 123456980";
                this.setTelefone(novoTelefone);
                break;
            case 4:
                //System.out.println("Digite o nome da rua");
                String novaRua = "Argentina";
                this.getEndereco().setRua(novaRua);
                break;
            case 5:
                //System.out.println("Digite o numero");
                int novoNumero = 545;
                this.getEndereco().setNumero(novoNumero);
                break;
            case 6:
                //System.out.println("Digite o bairro");
                String novoBairro = "Jardim Colonial";
                this.getEndereco().setBairro(novoBairro);
                break;
            default:
                break;    

            }

            System.out.println();
            System.out.println("Nome: " + this.getNome());
            System.out.println("CPF: " + this.getCpf());
            System.out.println("Telefone: " + this.getTelefone());
            System.out.println();
            System.out.println("Endereço");
            System.out.println("Rua: " + this.getEndereco().getRua());
            System.out.println("Numero: " + this.getEndereco().getNumero());
            System.out.println("Bairro: " + this.getEndereco().getBairro());
            System.out.println();
            System.out.println("Os dados estão corretos? [s/n]");
            dadosCorretos = "s";

            return false;

        }

    }

}
1 resposta

Olá, Bruno!

Já adianto que a melhor prática seria isolar o código de verificação de dados em outra classe, mas não vou fazer isso para não te confundir. Continue estudando os cursos de Java, que logo logo você encontrará maneiras melhores de implementar esse tipo de verificação.

Uma maneira prática de ler dados do usuário através do console é instanciando um objeto da classe Scanner. Essa classe possui métodos para leitura de diversos tipos de dados.

Fiz pequenas alterações no seu código, para que a alteração fosse feita com base em dados informados pelo usuário.

Como já tem um tempínho que não programo em Java, peço desculaps se houver algum erro no código (fiz no VSCode, sem nenhuma extensão para avaliar se a sintaxe está correta).

import java.util.Scanner;

public class Cliente {

    private String nome;
    private String cpf;
    private String telefone;
    private Endereco endereco = new Endereco();
    private String dadosCorretos;


    public Cliente(String nome) {
        this.nome = nome;
        //System.out.println("Conta Criada com sucesso!!");
        }
    public String getCpf() {
        return cpf;
    }
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    public String getNome() {
        return nome;
    }
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
    public String getTelefone() {
        return telefone;
    }
    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }
    public Endereco getEndereco() {
        return endereco;
    }
    public void setNome(String novoNome) {
        this.nome = novoNome;
    }

    @Override
    public String toString() {

        return "\nNome: " + this.getNome() +
                "\nCPF: " + this.getCpf() + 
                "\nTelefone: " + this.getTelefone() +
                "\n\nEndereço:" +
                "\nRua: " + this.getEndereco().getRua() +
                "\nNumero: " + this.getEndereco().getNumero() +
                "\nBairro: " + this.getEndereco().getBairro();
    }

     public void setDadosCorretos(String dadosCorretos) {
        this.dadosCorretos = dadosCorretos;
    }

    public void validacaoDeDados () {

        Scanner scannerDeLeitura = new Scanner(System.in);

        do {

            System.out.println(this.toString());
            System.out.println("Os dados estão corretos? [s/n]");
            this.setDadosCorretos(scannerDeLeitura.nextLine());

            if (this.dadosCorretos == "s") {
                System.out.println();
                System.out.println("CADASTRO REALIZADO COM SUCESSO!!");
            }
            else {

                System.out.println();
                System.out.println("O que deseja alterar?"
                        + "\n 1 - Nome"
                        + "\n 2 - CFP"
                        + "\n 3 - Telefone"
                        + "\n 4 - Rua"
                        + "\n 5 - Número"
                        + "\n 6 - Bairro");
                int caso = scannerDeLeitura.nextInt();
                switch (caso) {
                case 1:
                    System.out.print("Digite o nome do cliente");
                    String novoNome = scannerDeLeitura.nextLine();            
                    this.setNome(novoNome);
                    break;
                case 2: 
                    System.out.println("Digite o CPF");
                    String novoCpf = scannerDeLeitura.nextLine();
                    this.setCpf(novoCpf);
                    break;
                case 3:
                    System.out.println("Digite o telefone");
                    String novoTelefone = scannerDeLeitura.nextLine();
                    this.setTelefone(novoTelefone);
                    break;
                case 4:
                    System.out.println("Digite o nome da rua");
                    String novaRua = scannerDeLeitura.nextLine();
                    this.getEndereco().setRua(novaRua);
                    break;
                case 5:
                    System.out.println("Digite o numero");
                    int novoNumero = scannerDeLeitura.nextInt();
                    this.getEndereco().setNumero(novoNumero);
                    break;
                case 6:
                    System.out.println("Digite o bairro");
                    String novoBairro = scannerDeLeitura.nextLine();
                    this.getEndereco().setBairro(novoBairro);
                    break;
                default:
                    break;    

                }
            }

        } while(this.dadosCorretos != "s");

    }

}

Me comunique se houver algum erro!

Boa sorte em seus estudos!