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

Por que ele conseguiu alterar o nome da série mesmo depois de definir o setter?

Eu acho que não entendi direito a função do setter.

Até onde eu tinha entendido, ao deixar o nome privado impediríamos que ele fosse alterado através do código, a não ser que se utilizasse o setter que criamos na aula.

Portanto, o atlanta.nome = "atlanda - de glover" não deveria funcionar, correto?

2 respostas
solução!

Bom dia, João, tudo bem?

Isso mesmo, ao deixar o atributo privado dificultamos o acesso direto de um usuário a este valor (não impede completamente). O setter é uma função que tem o propósito de controlar o acesso do usuário nesta variável, abrindo uma "porta" para fazer esse tipo de modificação. Muitas vezes é necessário você alterar um atributo que foi instanciado previamente. A vantagem de se utilizar um setter é que você consegue aplicar modificações ao valor de input. No exemplo da aula, o professor fez com que ao utilizar o setter fosse aplicado dentro da string recebida o método title(), fazendo com que a palavra fosse formatada para o jeito desejado.

Dessa forma, é possível fazer:

atlanta.nome = "atlanda - de glover"

Devido a presença desse setter, porém internamente à classe o atributo _nome receberá o valor "Atlanda - De Glover". Foi possível alterar o nome do filme posteriormente de uma forma direta e, junto a isso, aplicar uma função para formatar o dado.

Eu precisei dar uma revisada na aula pra entender, mas seu comentário me ajudou a compreender que a finalidade da criação do setter - no contexto da aula, era diferente daquela que eu imagina. Agora tudo fez sentido.

Obrigado pela resposta, Gian!