Encapsulamento = um dos pilares fundamentais da Programação Orientada a Objetos - POO
consiste em ocultar os detalhes internos de uma classe e restringir o acesso direto aos dados, permitindo que esses dados sejam acessados e modificados apenas através de métodos específicos
promove segurança, manutenibilidade e flexibilidade no código
objetivos
proteger os dados de acesso inadequado ou alterações indesejadas
controlar como os dados são acessados e modificados
facilitar a manutenção e a leitura do código
permitir alterações internas na classe sem impactar outras partes do código
benefícios
segurança = dados sensíveis são protegidos contra alterações não autorizadas
flexibilidade = implementação interna pode mudar sem afetar outras partes do código
facilidade de manutenção = permite isolar mudanças e reduzir impactos
reutilização de código = lógica de validação e controle pode ser centralizada nos métodos
funcionamento = para implementar o encapsulamento, é preciso usar modificadores de acesso em atributos e métodos
private = restringe o acesso ao membro apenas para a própria classe
para acessar ou modificar atributos private, geralmente são criados métodos acessores (getters) e modificadores (setters)
public = permite o acesso de qualquer classe ou parte do código
usado em métodos que precisam ser acessíveis externamente, como getters e setters
protected = permite o acesso dentro do mesmo pacote e em subclasses, mesmo que estejam em pacotes diferentes
útil para proteger dados, mas permitir que subclasses tenham acesso
os métodos acessores e modificadores - getters e setters - fornecem controle sobre como os dados são lidos e modificados
publicclassContaBancaria{// Atributos privados (encapsulados)privateStringtitular;privatedoublesaldo;// ConstrutorpublicContaBancaria(Stringtitular){this.titular=titular;this.saldo=0.0;}// Método público para acessar o saldo (getter)publicdoublegetSaldo(){returnsaldo;}// Método público para modificar o saldo (setter)publicvoiddepositar(doublevalor){if(valor>0){saldo+=valor;}}// Método público para saque (controla o acesso ao saldo)publicbooleansacar(doublevalor){if(valor>0&&saldo>=valor){saldo-=valor;returntrue;}returnfalse;}// Método protegido (acessível por subclasses e no mesmo pacote)protectedvoidmostrarDetalhes(){System.out.println("Titular: "+titular);System.out.println("Saldo: "+saldo);}}
Encapsulamento é uma prática de agrupar atributos e métodos relacionados dentro de uma classe.
O uso do modificador de acesso private em atributos impede que eles sejam acessados diretamente fora da classe.
O encapsulamento permite que os atributos de uma classe sejam acessados diretamente sem o uso de métodos intermediários.
Métodos getter e setter são comumente usados para implementar o encapsulamento em uma classe.
A principal vantagem do encapsulamento é garantir que os dados internos de um objeto sejam acessados e modificados apenas de maneira controlada.
O modificador de acesso public permite que um atributo ou método seja acessado apenas dentro do mesmo pacote.
Usar protected em um atributo permite que ele seja acessado por subclasses da mesma classe, mesmo que estejam em pacotes diferentes.
Encapsulamento é uma prática que melhora a segurança e a manutenção do código, reduzindo a exposição desnecessária de dados.
Se um atributo for declarado como public, ele ainda estará encapsulado e seguro, desde que se use métodos getter e setter para acessá-lo.
O modificador de acesso private garante que um método não possa ser sobrescrito por subclasses.
Encapsulamento permite alterar a implementação interna de uma classe sem afetar as classes que a utilizam.
Em Java, um atributo private pode ser acessado diretamente por qualquer classe do mesmo pacote.
O encapsulamento está relacionado à ideia de esconder a complexidade do código e expor apenas a interface pública necessária.
É possível implementar encapsulamento em uma classe sem usar métodos getter e setter.
A prática de encapsulamento é usada para evitar o acesso direto a atributos e garantir que a lógica de validação seja aplicada antes de modificar qualquer dado.
Verdadeiro: encapsulamento envolve agrupar atributos e métodos que fazem sentido juntos dentro de uma classe.
Verdadeiro: private impede o acesso direto de atributos fora da classe, forçando o uso de métodos para acessá-los.
Falso: o encapsulamento visa impedir o acesso direto a atributos, promovendo o uso de métodos como getters e setters.
Verdadeiro: getters e setters são a forma padrão de implementar o encapsulamento para controlar como os atributos são acessados e modificados.
Verdadeiro: encapsulamento controla o acesso aos dados, evitando modificações inadequadas e preservando a integridade do objeto.
Falso: public permite acesso global de qualquer parte do código, não apenas dentro do mesmo pacote.
Verdadeiro: protected permite acesso dentro do mesmo pacote e também por subclasses, mesmo que estejam em pacotes diferentes.
Verdadeiro: encapsulamento protege o código e facilita a manutenção, ocultando detalhes internos e fornecendo uma interface clara.
Falso: se um atributo é public, ele não está encapsulado, pois pode ser acessado diretamente, o que vai contra a prática de encapsulamento.
Falso: o modificador private apenas impede o acesso ao método fora da classe, mas não afeta a sobrescrita, que é controlada por final.
Verdadeiro: com o encapsulamento, mudanças internas na classe não afetam outras partes do código que a utilizam, desde que a interface pública permaneça a mesma.
Falso: um atributo private é acessível apenas dentro da própria classe, não por outras classes, mesmo que estejam no mesmo pacote.
Verdadeiro: encapsulamento é sobre esconder detalhes complexos e fornecer apenas a interface pública necessária.
Verdadeiro: encapsulamento pode ser implementado usando métodos mais complexos que controlam o acesso a dados, sem necessariamente usar getter e setter.
Verdadeiro: encapsulamento ajuda a garantir que a lógica de validação seja aplicada antes que qualquer modificação de dados ocorra.