Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Método atualizarSalario() do curso de SOLID marcado como public não vai ferir o encapsulamento?

Bom dia, no curso SOLID COM JAVA: PRINCÍPIOS DA PROGRAMAÇÃO ORIENTADA A OBJETOS, na aula "Extraindo a lógica de reajuste salarial" do bloco "melhorando a coesão", o método atualizarSalario() linha 24 da classe Funcionário, não deveria ser private, protected ou algo do tipo ou ainda a atualização ser feita também no service? Da maneira que está construído, mesmo extraindo a lógica de reajuste para um service e melhorando a coesão, com o método atualizarSalario publico eu posso simplesmente passar o aumento pra classe Funcionário e pular a etapa de validação, não estaria assim ferindo o encapsulamento?

2 respostas
solução!

Oi Michael, tudo bem?

O encapsulamento é um princípio importante da programação orientada a objetos, e é natural se preocupar com isso.

No caso específico do método atualizarSalario(), é importante considerar o contexto em que ele está sendo utilizado. O objetivo desse método é atualizar o salário do funcionário com base em um reajuste específico. Ele faz parte da lógica interna da classe Funcionário e é responsável por realizar essa atualização.

Embora o método esteja marcado como public, isso não significa necessariamente que o encapsulamento está sendo violado. O encapsulamento é sobre controlar o acesso aos membros internos de uma classe, e marcar um método como public não significa que qualquer código externo possa acessá-lo livremente.

No caso do método atualizarSalario(), ele pode ser acessado por outras classes dentro do mesmo pacote, mas não por classes externas. Além disso, é importante que o método seja utilizado corretamente, seguindo as regras e validações necessárias para garantir a integridade dos dados.

Se você está preocupado com a possibilidade de pular a etapa de validação ao chamar diretamente o método atualizarSalario(), uma solução seria adicionar as validações necessárias dentro do próprio método ou em algum método auxiliar da classe Funcionário. Dessa forma, mesmo que o método seja chamado diretamente, as validações serão realizadas.

Lembre-se que o encapsulamento não é apenas sobre tornar membros privados, mas também sobre garantir que o acesso a esses membros seja feito de forma controlada e segura.

Um abraço e bons estudos.

Obrigado Lorena! Abraço pra você também.