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

Implementação ruim do login?

A minha ideia inicial foi fazer um usuário incremental, mas não sei dizer se o código ficou bom. Gostaria de saber se existe uma forma melhor de fazer isso.

package Entidades;

public class Gerente extends Funcionario{

    private String senha;
    private int usuario;
    private static int usuarioIncremental = 1;

    public Gerente(String senha) {
        super.salario = 5000.00;
        this.senha = senha;
        this.usuario = usuarioIncremental;
        usuarioIncremental++;
    }

    public double getBonificacao() {
        return super.getBonificacao() + super.getSalario();//Soma o salário com a bonificação padrão do funcionário.
    }

    public boolean autentica(String senha) {
        if (this.senha == senha)
            return true;
        return false;
    }

    public boolean autentica(String senha, int usuario) {
        if (this.senha == senha && this.usuario == usuario)
            return true;
        return false;
    }

    public int getUsuario() {
        return usuario;
    }
}
1 resposta
solução!

usuarioIncremental não deveria iniciar em 0?

Hah eee... A sobrecarga autentica(String senha, int usuario) não deveria ser um método da classe, portanto, static?

Imagina o objeto chamando esse metodo

public static void main(String[] args) {
        Funcionario funcionario = new Gerente("minhaSenha");
        funcionario.autentica("minhaSenha", func.getUSuario());
    }

Internamente, o método já tem a propiedade usuario. Nas faz sentido passa-la como parâmetro. A não ser que seja um metodo da classe, pois ela não sabe qual objeto está em uso.

Exemplo:

public static boolean autentica(String senha, Gerente gerente) {
        return gerente.getSenha().equals(senha);         
    }
public static void main(String[] args) {

        Funcionario gerente1 = new Gerente("senhaGerente1");
        Funcionario gerente2 = new Gerente("senhaGerente2");

        // A classe nao ira autenticar esse objeto
        Funcionario.autentica("senha1", gerente1);

        // A classe ira autenticar esse objeto
        Funcionario.autentica("senhaGerente2", gerente2);

    }