1
resposta

[Sugestão] Por quais motivos utilizamos o encapsulamento?

"Para adicionar lógica ao inicializar um atributo." -> Não sei se concordo com essa alternativa, visto que os atributos dentro do Kotlin tem que ser obrigatoriamente inicializados com um valor por padrão. Mesmo em um construtor de uma classe quando acesso o valor de um atributo o programa já lê o valor que foi passado na inicialização deste. Ou estou entendendo algo errado, ou deixando de entender, ou poderiamos modificar o texto desta alternativa para algo como "Para adicionar lógica ao modificar o valor de um atributo." ou algo do tipo. Poderiam dar uma analisada nesta questão por favor ?

1 resposta

Olá, Jairo!

Entendo sua dúvida em relação à alternativa "Para adicionar lógica ao inicializar um atributo". De fato, no Kotlin, os atributos devem ser inicializados com um valor por padrão. No entanto, o encapsulamento não se trata apenas da inicialização dos atributos, mas também de controlar o acesso a eles.

O encapsulamento é uma técnica importante em programação orientada a objetos, pois nos permite definir quem pode acessar e modificar os atributos de uma classe. Dessa forma, podemos adicionar lógica ao modificar o valor de um atributo, como você mencionou.

Imagine que você tenha uma classe Pessoa com um atributo idade. Utilizando o encapsulamento, você pode definir um setter para o atributo idade que verifica se o valor passado é válido, como por exemplo, se é maior que zero. Dessa forma, você garante que a idade sempre será um valor válido e evita que valores inválidos sejam atribuídos diretamente ao atributo.

Além disso, o encapsulamento também nos permite impedir a manipulação direta do atributo em qualquer ponto do código, como mencionado na alternativa C. Isso é importante para manter a integridade dos dados e evitar que valores incorretos sejam atribuídos aos atributos.

Portanto, a alternativa "Para adicionar lógica ao modificar o valor de um atributo" é uma forma mais abrangente de entender o uso do encapsulamento, englobando tanto a inicialização quanto a modificação dos atributos.

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, é só me dizer.

Espero ter ajudado e bons estudos!