Boa tarde!
Quando não queremos repetir código, devemos utilizar Composição. As Classes Cliente, Administrador e Gerente estão utilizando AutenticacaoUtil. Isso deveria evitar a repetição, mas não foi o que aconteceu.
Seguem os códigos.
Cliente.java
public class Cliente implements Autenticavel {
private AutenticacaoUtil autenticador;
public Cliente() {
this.autenticador = new AutenticacaoUtil();
}
@Override
public void setSenha(int senha) {
this.autenticador.setSenha(senha);
}
@Overridepublic boolean autentica(int senha) {
return this.autenticador.autentica(senha);
}
}
Administrador.java
public class Administrador extends Funcionario implements Autenticavel {
private AutenticacaoUtil autenticador;
public Administrador() {
this.autenticador = new AutenticacaoUtil();
}
@Override
public void setSenha(int senha) {
this.autenticador.setSenha(senha);
}
@Override
public boolean autentica(int senha) {
return this.autenticador.autentica(senha);
}
@Override
public double getBonificacao() {
return 50;
}
}
Gerente.java
public class Gerente extends Funcionario implements Autenticavel {
private AutenticacaoUtil autenticador;
public Gerente() {
this.autenticador = new AutenticacaoUtil();
}
@Override
public void setSenha(int senha) {
this.autenticador.setSenha(senha);
}
@Override
public boolean autentica(int senha) {
return this.autenticador.autentica(senha);
}
@Override
public double getBonificacao() {
return super.getSalario();
}
}
Os Métodos setSenha e autentica não estão repetidos nas 3 Classes?
Pelo que eu entendi, não tem jeito de evitar isso. Ou tem?