1
resposta

Código de Autenticação de outra forma.

Sempre acreditei que o método main em java é somente para testes, então eu sempre coloco o mínimo de código no mesmo quando é necessário. Ai vai o meu projeto:

//classe usuário basico

package login;

public class User {

    private String login;
    private String senha;
    
    public User(String login, String senha) {
        this.login = login;
        this.senha = senha;
    }

    public boolean validarSenha(String login, String senha) {
        return this.login.equals(login) && this.senha.equals(senha);
    }
    
    public String getLogin() {
        return login;
    }
    
    
}
//Classe para a autenticação

package login;

import java.util.Scanner;

public class Autentica extends User {

    Scanner scanner = new Scanner(System.in);
    int tentativasRestantes = 3;

    public Autentica(String login, String senha) {
        super(login, senha);
    }

    public void verifica() {
        while (tentativasRestantes > 0) {
            System.out.println("Digite o seu usuário: ");
            String usuario = scanner.nextLine();

            System.out.println("Digite a senha: ");
            String senha = scanner.nextLine();

            if (validarSenha(usuario, senha)) {
                System.out.println("Login bem-sucedido!");
                break;
            } else {
                tentativasRestantes--;
                if (tentativasRestantes == 0) {
                    System.out.println("Acesso bloqueado. Contate o administrador.");
                } else {
                    System.out.println("Usuáio ou senha incorreta! Tentativas restantes: " + tentativasRestantes);
                }

            }
        }
        scanner.close();
    }
    
}
//classe de execução de testes.
package login;

public class TesteUser {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Autentica autentica = new Autentica("Roberto", "123456");

        autentica.verifica();
    }

}

Também acho mais efetivo o treinamento de encapsulamento usando em classes e pacotes separados para serem testadas todas as regras do encapsulamento.

Obrigado!

1 resposta

Oi, Roberto! Como vai?

Seu cuidado em manter o main enxuto e centralizar a lógica em outras classes mostra uma ótima organização. A estrutura que você aplicou reflete bem os princípios de encapsulamento e responsabilidade única.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!