Olá Augusto! Tudo joia?
Vamos analisar o seu código e ver como podemos melhorar a organização e a segurança, especialmente em relação ao encapsulamento e à segurança da senha.
Encapsulamento e Segurança: No seu código atual, a senha é diretamente acessível através dos métodos getSenha e setSenha, o que não é ideal para segurança. Uma boa prática seria evitar expor a senha diretamente. Podemos modificar a classe Usuario para que a senha só possa ser alterada através de um método que também verifica a senha atual.
Método de Alteração de Senha: Vamos integrar a lógica de validação da senha dentro da própria classe Usuario. Isso melhora o encapsulamento e segurança, pois a senha não precisa ser exposta fora da classe.
Aqui está uma sugestão de como você pode reestruturar o código:
package senha.de.controle;
public class Usuario {
private String senha;
public Usuario(String senha) {
this.senha = senha;
}
public boolean alterarSenha(String senhaAntiga, String novaSenha) {
if (this.senha.equals(senhaAntiga)) {
this.senha = novaSenha;
System.out.println("Senha alterada com sucesso.");
return true;
} else {
System.out.println("Senha atual incorreta. A senha não foi alterada.");
return false;
}
}
}
- Classe Principal: Agora, você pode simplificar a classe
ControleDeSenhaMain para usar o método alterarSenha diretamente no objeto Usuario.
package senha.de.controle;
import java.util.Scanner;
public class ControleDeSenhaMain {
public static void main(String[] args) {
Usuario user1 = new Usuario("123456");
Scanner read = new Scanner(System.in);
int i;
do {
System.out.println("Insira a senha antiga:");
String senhaAntiga = read.nextLine();
System.out.println("Insira a nova senha: ");
String senhaNova = read.nextLine();
user1.alterarSenha(senhaAntiga, senhaNova);
System.out.println("Deseja alterar a senha?\n1.sim\n2.não");
i = read.nextInt();
read.nextLine();
} while (i != 2);
read.close();
}
}
Com essas mudanças, o código fica mais seguro e o encapsulamento é respeitado, já que a lógica de alteração de senha está dentro da classe Usuario. Assim, a senha não é exposta diretamente e a lógica de validação é centralizada.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.