Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

Minha resposta

package com.github.lucasdevrj.controledesenha;

public class Login {

    private String senha;

    public Login(String senha) {
        this.senha = senha;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha, String novaSenha) {
        if (getSenha().equals(senha)) {
            this.senha = novaSenha;
            System.out.println("Senha alterada com sucesso!");
        } else {
            System.out.println("Senha atual incorreta. A senha não foi alterada.");
        }
    }
}
/**
 * Você está desenvolvendo um sistema de autenticação para um aplicativo bancário. Os usuários precisam ter total
 * segurança de que suas senhas não podem ser alteradas sem autorização, mesmo que alguém tenha acesso temporário
 * ao dispositivo.
 *
 * Crie uma classe que:
 *
 * Armazene com segurança a senha do usuário
 * Permita alterar a senha apenas com a confirmação da senha atual
 * Forneça feedback sobre o resultado da operação
 * Exemplo de entrada:
 *
 * Usuario user = new Usuario("123456");
 * user.setSenha("123456", "abc123");
 *
 * Saída esperada:
 * Em caso de sucesso:
 * Senha alterada com sucesso!
 *
 * Em caso de falha:
 * Senha atual incorreta. A senha não foi alterada.
 */

package com.github.lucasdevrj.controledesenha;

public class Principal {
    public static void main(String[] args) {
        Login login = new Login("javão");
        login.setSenha("java", "JavaScript");
        login.setSenha("javão", "Python");
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
beleza?

1 resposta
solução!

Oi, Lucas. Tudo bem com você?

Obrigado por compartilhar sua resposta para o exercício de encapsulamento. O comportamento solicitado foi atendido: a senha é armazenada em um atributo privado e sua alteração depende da confirmação da senha atual. Além disso, o método setSenha fornece um retorno ao usuário por meio das mensagens de sucesso e falha, exatamente como proposto na atividade. O código apresentado está consistente com o objetivo do desafio e os testes realizados na classe Principal demonstram corretamente os dois cenários esperados.

Como sugestão de evolução, em um contexto real de desenvolvimento, não seria interessante disponibilizar um método getSenha(), pois isso permitiria que outras partes da aplicação tivessem acesso direto à senha armazenada. Nesse exercício isso não compromete o funcionamento, mas, por boas práticas de encapsulamento e segurança, o ideal seria realizar a comparação diretamente dentro do setSenha, sem expor esse valor. Outra possibilidade seria fazer o método retornar um boolean, permitindo que quem o utiliza decida como tratar o resultado da operação.

Como você adaptaria essa classe para também exigir que a nova senha tivesse um tamanho mínimo antes de permitir a alteração?

Parabéns pela implementação e por compartilhar sua resolução. Continue praticando e trazendo suas soluções para o fórum. Estamos à disposição para ajudar no seu aprendizado.

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