A programação orientada a objetos surgiu com o objetivo de
tornar o desenvolvimento de software menos complexo e mais
produtivo. Entre seus princípios, um é empregado com a
finalidade de separar os aspectos externos de um objeto, que são
acessíveis a outros objetos, dos detalhes internos da
implementação, prevendo o isolamento a determinados
elementos do objeto – métodos/atributos, de acordo com a
necessidade de acesso a eles. Esse conceito parte da premissa de
que nem todo método e atributo precisam estar visíveis e
acessíveis publicamente. Existem elementos que são pertinentes
apenas ao próprio objeto, outros pertinentes aos objetos filhos e
outros que são pertinentes a todos os objetos associados.
Esse princípio é denominado