Como através dessa abordagem seria possível blindar o atributo salário se ao instanciar o Funcionário vou ter acesso ao método atualizarSalario e através dele posso atribuir qualquer valor? Podendo ele ser comparado à um método "setSalário".
Como através dessa abordagem seria possível blindar o atributo salário se ao instanciar o Funcionário vou ter acesso ao método atualizarSalario e através dele posso atribuir qualquer valor? Podendo ele ser comparado à um método "setSalário".
Oi Danilo
A ideia é deixar o acesso pelo método da classe para que a própria classe Funcionário controle o salário ao invés de deixar o mundo externo mudar o salário (um atributo salário public, por exemplo). Fazendo via método da classe podemos colocar quaisquer regras que quisermos lá e o mundo externo será obrigado a usar essa regra/método para alterar o salário.
Correto, mas, o que foi feito foi a extração da validação para uma classe externa onde faz a chamada do método atualizaSalario que não tem mais validação fazendo o trabalho do método "setSalario" que foi removido para manter o encapsulamento. Desta forma não seria melhor manter toda a validação dentro da classe salário no método atualizaSalario? pelo menos manteria intacta a regra de negócio.
Eu faria um pouco diferente, o método da classe reajuste que altera o salário eu tornaria estático passaria como parâmetro o salário atual e o reajuste e retornaria o valor reajustado. Não vi necessidade de passar um objeto inteiro de funcionário.
Eu já aproveitaria que está passando o objeto funcionário para atualizar também a data do último reajuste. Porque esse reajuste envolve alterar 2 campos ou então nenhum.
Fiquei exatamente com a mesma dúvida do Danilo. No vídeo "Extraindo a lógica de reajuste salarial", a validação é extraída para uma classe externa sob o pretexto de manter a coesão da classe Funcionário, porém isso acabou gerando uma quebra total do encapsulamento da mesma, pois foi necessário criar um método público que altera diretamente o atributo salário sem precisar passar pela validação. Como resolver esse problema?
Oi Pessoal,
Esse assunto foi discutido em outro topico: https://cursos.alura.com.br/forum/topico-como-resolver-o-setsalario-disfarcado-145235