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.