3
respostas

Como criar senha para ser usada no construtor

Oi! estou com uma dúvida. Eu gostaria saber se há, dentro dos parâmetros do construtor de uma classeX, uma forma de colocar uma senha que apenas pegasse o valor que está iniciado fora do construtor. por exemplo:

public classX (int senha){ }

Eu gostaria que, ao iniciar essa classe, uma senha fosse definida, porém não fosse um valor fixo e que, a partir de um setSenha, eu pudesse mudar o valor dentro do construtor (como se eu estivesse alterando a senha), porém na hora da execução do programa.

É como se fosse algo assim:

public classX (setSenha()) { }

E na hora de rodar o programa:

ClassX x = new ClasseX(setSenha);

x.setSenha(100); -----------^

Eu queria que o setSenha alterasse a senha do construtor, resumindo.

Desculpe se ficou confusa a pergunta. Ainda estou me acostumando com a linguagem.

3 respostas

Olá Eduardo!

O que você poderia fazer é ter um atributo senha na sua classe que é alterado dentro do construtor - não como parâmetro.

Por exemplo:

Pessoa.class

public class Pessoa{

    int idade;
    String nome;
    String cpf;
    String senha;

    public Pessoa(int idade, String nome, String cpf){
        this.idade = idade;
        this.nome = nome;
        this.cpf = cpf;
        this.senha = nome + cpf;
    }
}

Então quando você criar o objeto dessa forma:

Pessoa pessoa = new Pessoa(19, "Jubileu", "12345678910");

Será gerado uma senha que será a junção do nome com o cpf - ou seja - "Jubileu12345678910".

Você pode criar outras formas de geração de senha, esse foi um exemplo bem simples.

Espero que tenha ajudado!

Bons estudos.

Olá, Guilherme! Agradeço pela sua ajuda.

Acho que a minha pergunta ficou muito confusa mesmo, então vou pegar o exemplo que você deu pra tentar explicar melhor.

Nessa linha:

Pessoa pessoa = new Pessoa(19, "Jubileu", "12345678910");

A ideia é que, ao invés de ter "Jubileu" e "12345678910", eu tivesse algo do tipo:

Pessoa pessoa = new Pessoa(19, setSenha());

E que, DEPOIS de criar o 'pessoa', eu pudesse fazer:

pessoa.setSenha(12345678910);

Pra que esse novo setSenha substituísse o setSenha do construtor. O intuito era que o setSenha pudesse modificar a senha do construtor, pra que a pessoa pudesse alterar a senha dela, por exemplo. Da forma como está feita, Jubileu e 12345678910 são "fixos" no sentido de que eu tenho q alterar ali com um valor real pra que funcione. A minha ideia era ter uma variavel que eu pudesse colocar no construtor e que essa variavel, fora do construtor, fosse um setSenha (ou getSenha) , e a partir desse setSenha, a senha do construtor realmente fosse alterada.

Olá Eduardo!

Então fiz uns testes aqui e não dá para fazer dessa forma. Não é possível você passar um método assim como parâmetro no construtor.

O máximo que daria pra fazer é usar dois métodos setSenha. Um sem parâmetro que gera a senha dentro do construtor e outro com parâmetro que altera a senha. Dessa forma:

public class Pessoa{

    int idade;
    String nome;
    String cpf;
    String senha;

    public Pessoa(int idade, String nome, String cpf){
        this.idade = idade;
        this.nome = nome;
        this.cpf = cpf;
        this.senha = setSenha(); // AQUI O MÉTODO SENDO USADO
    }

    // MÉTODO PARA GERAR A SENHA NO CONSTRUTOR
    public String setSenha() {
        this.senha = "SENHA GERADA";
        return senha;
    }

    // MÉTODO PARA ALTERAR A SENHA QUANDO QUISER
    public void setSenha(String senha){
        this.senha = senha;
    }
}

O uso dessa classe ficaria assim:

public static void main(String[] args) {
        Pessoa pessoa = new Pessoa(19, "Jubileu", "39293424242");
        System.out.println(pessoa.senha); // SENHA GERADA
        pessoa.setSenha("NOVA SENHA");
        System.out.println(pessoa.senha); // NOVA SENHA
    }