Prezados,
poderiam me dizer de forma clara e bem definida as vantagens de se usar encapsulamento? Apesar de usar, sempre tive dificuldade em definir isso.
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!
Prezados,
poderiam me dizer de forma clara e bem definida as vantagens de se usar encapsulamento? Apesar de usar, sempre tive dificuldade em definir isso.
Bom dia Hewerton, como na orientação a objetos temos classes com atributos e métodos, a responsabilidade de manipular os atributos é da própria classe e não de outras classes que a utilizam, por isso colocamos os atributos como private e se quisermos que alguém de fora use-os terão que acessar os métodos public.
Por exemplo, a classe pessoa tem o atributo cpf, se deixarmos outras classes acessarem o cpf e setar qualquer valor podemos ter valores inválidos. Então deixamos CPF private e criamos o método incluiCpf() que recebe um cpf e valida antes de setar o atributo.
Pegou a ideia?
Bro, a principal vantagem é que as funcionalidades e os atributos serão acessados sempre da mesma forma e utilizando uma única só via. A forma como essa via trabalha passa a ser irrelevante.
Pra ficar mais claro vou listar as vantagens a meu ver: maior segurança não expondo a parte interna do sistema e maior praticidade ao poder fazer validações em um local somente.
Um exemplo que gosto muito é:
Ao invés de acessar o motor do carro puxando fios você aperta o acelerador = Ao invés de acessar o atributo diretamente no objeto você usa o método getter.
Nereu, eu usaria a sua analogia de forma diferente com encapsulamento:
Ninguém pode acessar o seu motor sem a sua autorização. As business rules vão definir se você precisa ter um getter/setter (em geral a resposta é um sonoro não)