Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Duvida sobre Encapsulamento

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.

3 respostas
solução

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)