Dúvida conceitual sobre Encapsulamento e visibilidade [RESOLVIDO]

E aí, galera…

como pesquisei e não encontrei algo que me esclarecesse resolvi lançar aqui a pergunta. Tratando-se de definição em relação ao conceito. Existe diferença entre encapsulamento e visibilidade?

Encapsulamento seria uma forma de limitar o acesso direto aos atributos e métodos de uma classe. A visibilidade seria…

Se puderem ajudar, valeu! :smiley:

Encapsulamento vêm do conceito chave da Orientação a Objetos, que é a separação clara entre interface e implementação. Assim, o bom design OO deve encapsular a implementação de uma classe, de forma que objetos interajam sem fazer qualquer suposição sobre a implementação de outro objeto.

Visibilidade de membros de classes é o meio pelo qual as linguagens OO permitem que se implemente encapsulamento, são os modificadores public, protected e private . Assim, atribuindo a visibilidade adequada a cada membro da classe, separamos a interface da implementação.

Acho que saquei…

Encapsulamento é a forma de “proteção” da classe, e é por esse conceito que aplicamons o “importante saber o que faz e não como faz”. A visibilidade é a “ferramenta” que nos permite encapsular ou proteger;

Não leia ao pé da letra, mas acho que entendi sim.

Valeu

[quote=lucas_mnzs]Acho que saquei…

Encapsulamento é a forma de “proteção” da classe, e é por esse conceito que aplicamons o “importante saber o que faz e não como faz”. A visibilidade é a “ferramenta” que nos permite encapsular ou proteger;

Não leia ao pé da letra, mas acho que entendi sim.

Valeu[/quote]

Existem várias formas de encapsulamento. A visibilidade é apenas uma delas.
Se vc restringe a visibilidade obviamente está encapsulando.
Mas outras formas existe como o uso de composição, por exemplo. Os padrões Decorator, Adapter , Proxy ,Wrapper, Façade, são formas de encapsulamento , mas nada têm a haver com visibilidade.

O próprio OO é uma forma de encapsulamento de vc olhar na prespectiva dos dados e rotinas.

Então, encapsulamento não é para proteger a classe, é para proteger o modelo (e o design).
Visibilidade é uma das formas de encapsular algo.
Mais sobre isto aqui.

Valeu, galera…

muito bom o post cara.

Abraços.