1
resposta

ValidaçãoPeriodicidadeReajuste não utiliza todos os atributos da assinatura do método na interface.

Bom dia. Eu entendo que o intuito do professor foi implementar uma Interface pra utilizar as regras de validação mas fiquei com uma dúvida:

A interface assina dois atributos (um objeto funcionário e um aumento):

public interface ValidacaoReajuste {

    void validar(Funcionario funcionario, BigDecimal aumento);

}

Porém, concordem comigo que pra verificar uma periodicidade de aumento é irrelevante o quanto é o aumento? Tanto que a variável aumento não foi utilizada no exemplo do professor:

public class ValidacaoPeriodicidadeReajuste implements ValidacaoReajuste{

    public void validar(Funcionario funcionario, BigDecimal aumento) {
        LocalDate dataUltimoReajuste = funcionario.getDataUltimoReajuste();
        LocalDate dataAtual = LocalDate.now();
        long mesesDesdeUltimoReajuste = ChronoUnit.MONTHS.between(dataUltimoReajuste, dataAtual);
        if(mesesDesdeUltimoReajuste < 6) {
            throw new ValidacaoException("Intervalo entre reajustes deve ser maior que 6 meses");
        }

    }
}

A dúvida seria, não seria necessário sempre utilizar todos os atributos que foram assinados na interface lá nas implementações? Porque se for, como faz com a questão do aumento que não é utilizado?

1 resposta

Oi Edison,

Sim, acabou que nessa implementação um dos parâmetros não foi utilizado. Mas nesse caso não teria como tirar o parâmetro, por conta da interface e porque as outras implementações vão precisar.

Esse é um caso que não tem muito o que fazer, sem criar mais código que talvez não faça sentido.

Bons estudos!