2
respostas

Validação na Classe TesteSistema

Boa tarde pessoal, to iniciando no Java e aprendendo nos conceitos de orientação a objetos.

Implementei da mesma forma que o professor Nico as classes Administrador/Cliente/Gerente | Criei uma interface abstrata Autenticavel e também criei uma classe Sistema Interno

Só que to querendo solucionar um pouquinho diferente pra automatizar autenticação do meu sistema.

Implementação da Classe SistemaInterno Minha classe de TesteSistema eu estou instanciando um objeto do tipo gerente genérico

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

Só que estou com a seguinte dúvida, só consigo automatizar minha senha se eu for na classe SistemaInterno e inserir direto no atributo da classe que a senha é 222, como eu conseguiria fazer com que o setSenha da classe gerente fosse também validado e atualizado na classe SistemaInterno sem que eu necessitasse alterar o valor direto do atributo? Eu tentei utilizar o setSenha dentro da classe, mas acaba que eu teria que validar 2 vezes, aí confesso que me buguei na lógica, por isso to pedindo ajuda kkkk

2 respostas

Poxa tempinho tentando o feedback e não tive, mas agradeço ao pessoal assim mesmo, obrigado.

Olá Victor, tudo bem com você?

Peço desculpas pela demora ao obter um retorno.

Primeiro de tudo, parabéns por ir além do proposto no curso e buscar seu método de resolução, a prática é uma grande aliada do conhecimento!

Uma solução possível poderia ser ao chamar o método setSenha() da classe Gerente, internamente chamar o método setSenha() da classe SistemaInterno, passando a senha antiga do sistema para autenticar e finalmente alterando a senha do Sistema. Para isso, ao criar uma instância da classe SistemaInterno, vai ser necessário a criação de uma senha inicial, que o gerente vai ter que usar para autenticar, e trocar a senha.

Além disso, é necessário que o Gerente conheça qual o SistemaInterno, para conseguir fazer essa chamada de método. Para isso, você pode fazer de algumas maneiras, bem como:

Por composição: o Gerente passa a ter um atributo do tipo SistemaInterno, que é passado na sua criação:

//construtor da classe Gerente
private int senha;
private SistemaInterno si;

public Gerente(int senha, SistemaInterno si){
    this.senha = senha;
    this.si = si;
}

Permitindo, assim, a alteração nos campos de SistemaInterno a partir do Gerente.

Outra solução possível seria dentro do setSenha() do Gerente, passar o SistemaInterno:

//Classe Gerente
public void setSenha(int senhaAtual,int novaSenha, SistemaInterno si){
    si.setSenha(senhaAtual, novaSenha);
}

Fazendo a verificação e alterando a senha.

Sendo assim, é importante que nós façamos com que o Gerente conheça o SistemaInterno para conseguir fazer as alterações!

Me coloco à disposição caso surjam dúvidas e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!