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".
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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