Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Criar um filtro

Pessoal estou com uma duvida. Estou testando o que aprendi e me deparei com seguinte cenário aonde o código ficará redundante

gostaria de saber se tem algum outro meio de resolver, criar um filtro ou terá que ser desta forma .

o que acontece. todos meus atributos estão privado porem nenhum deles deixei o SET definido, pois serão obrigatório no construct, e para alterar os dados "se possível de algum erro" terá que inserir uma senha (não sei se é a forma mais correta). porem do meu jeito estou vendo que ficará redundante. pois terei que fazer cada método para alterar 1 atributo

segue o código

public class Endereco {

private String cidade;
private String uf;
private String nomeDaRua;
private String bairro;
private int numero;
private String cep;

private static String senha;

public Endereco(String cidade, String uf, String nomeDaRua, String bairro, int numero, String cep) {
    this.cidade = cidade;
    this.uf = uf;
    this.nomeDaRua = nomeDaRua;
    this.bairro = bairro;
    this.numero = numero;
    this.cep = cep;
}


//os getters foram ocultados 

public void alterarCidade(String cidade, String cod) {
    senha = "2a";
    if(cod.equals(senha)) {
        this.cidade = cidade;
    }else {
        System.err.println("Não foi possivel alterar CIDADE");
        return;
    }
}

public void alterarUf(String uf, String cod) {
    senha = "3f";
    if (cod.equals(senha)) {
        this.uf = uf;
    }else {
        System.err.println("Não foi possivel alterar UF");
        return;
    }
}

}

1 resposta
solução!

Olá Michel,

Realmente você precisará implementar um método "alterar" para cada atributo com a regra de negócio validar senha, o que seria equivalente aos setters ...

Mas você pode fazer um método para validar a senha e retornar 'true' ou 'false', assim você personaliza a mensagem de erro deste retorno dentro de cada método alterar ... evitaria repetir o código de comparação das senhas para todos os outros "setters" dos atributos.

Nessa alternativa, ficaria assim ...

public class Endereco {
    private String cidade;

    public Endereco() {
        cidade = "Alura";
    }

    public boolean validaSenha(String senhaAlteracao, String senha) {
        if (senhaAlteracao.equals(senha)) {
            return true;
        } else {
            return false;
        }
    }

    public void alteraCidade(String cidade, String senha) {
        String senhaCidade = "abc";

        validaSenha(senhaCidade, senha);

        if (validaSenha(senhaCidade, senha)) {
            this.cidade = cidade;
            System.out.println("Dado Alterado!");
        } else {
            System.out.println("Senha inválida!");
        }
    }

    public String getCidade() {
        return cidade;
    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software