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.
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)