Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Princípios do Solid

Que aula incrível, mas agora me surgiu dúvidas.. Na aula o professor faz a lógica do reajuste na classe reajuste kkkk Mas também utiliza o método da classe funcionário como no exemplo abaixo


 public void concederReajuste(Funcionario funcionario, Enum<DesempenhoEnum> desempenhoEnumEnum) {
        if (desempenhoEnumEnum == DesempenhoEnum.A_DESEJAR) {
            BigDecimal reajuste = funcionario.getSalario().multiply(new BigDecimal("0.03"));
            funcionario.reajustarSalario(reajuste.setScale(2, RoundingMode.UP));

        }
    }

Seria possível fazer essa lógica sem usar um método da classe funcionário?, se sim iria ferir algum princípio do SOLID? Exemplo:

 public void concederReajuste(Funcionario funcionario, Enum<DesempenhoEnum> desempenhoEnumEnum) {
        if (desempenhoEnumEnum == DesempenhoEnum.A_DESEJAR) {
            BigDecimal reajuste = funcionario.getSalario().multiply(new BigDecimal("0.03"));
           funcionario.getSalario().add(reajuste);

        }
    }
1 resposta
solução!

Olá Kevin, tudo bem? Fico feliz em saber que está gostando do curso!

Sobre sua dúvida, é possível sim fazer a lógica do reajuste sem utilizar um método da classe Funcionario. No entanto, é importante lembrar que um dos princípios do SOLID é o princípio da responsabilidade única, que diz que uma classe deve ter apenas uma responsabilidade.

Repare o seguinte: o método reajustarSalarioé relativo ao funcionário porque ele lida diretamente com um atributo de funcionário, que é salario. Se tentarmos mexer com o atributo salario em outra classe, estaremos atrapalhando o encapsulamento da classe Funcionário, uma vez que, de uma classe externa, estamos conseguindo modificar algo que diz respeito apenas ao funcionário.

Dessa forma, além de atrapalhar o encapsulamento, também estaremos ferindo o princípio da responsabilidade única, uma vez que outra classe estará cuidando da responsabilidade de funcionário.

Espero ter ajudado! Qualquer dúvida, estou à disposição! :)

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software