11.5. Estrutura de classes e objetos em Java: Encapsulamento
Página 63 | Ouça em áudio
11.5 Estrutura de Classes e Objetos em Java: Encapsulamento
Em Java, o conceito de encapsulamento é um dos pilares fundamentais da programação orientada a objetos. Encapsulamento é a técnica de ocultar os detalhes de implementação de uma classe e expor apenas as funcionalidades necessárias para o mundo exterior. Isso é feito usando o controle de acesso aos membros de uma classe, que são principalmente variáveis e métodos. O encapsulamento ajuda a proteger os dados e a manter a integridade do objeto, além de tornar o código mais fácil de manter e evoluir.
O encapsulamento em Java é alcançado através de modificadores de acesso, que controlam a visibilidade das variáveis e métodos de uma classe. Os quatro modificadores de acesso em Java são:
- private: O membro só pode ser acessado dentro da própria classe.
- default (sem modificador): O membro pode ser acessado dentro do mesmo pacote.
- protected: O membro pode ser acessado dentro do mesmo pacote ou por subclasses em pacotes diferentes.
- public: O membro pode ser acessado de qualquer lugar.
Para entender melhor o encapsulamento, vamos considerar um exemplo de uma classe que representa um banco. Suponha que temos uma classe chamada ContaBancaria
que possui um saldo como variável de instância.
public class ContaBancaria {
private double saldo;
public ContaBancaria(double saldoInicial) {
if (saldoInicial > 0) {
this.saldo = saldoInicial;
}
}
public void depositar(double valor) {
if (valor > 0) {
saldo += valor;
}
}
public boolean sacar(double valor) {
if (valor > 0 && saldo >= valor) {
saldo -= valor;
return true;
}
return false;
}
public double getSaldo() {
return saldo;
}
}
Neste exemplo, a variável saldo
é marcada como private
, o que significa que ela não pode ser acessada diretamente de fora da classe ContaBancaria
. Em vez disso, métodos públicos como depositar()
, sacar()
e getSaldo()
são fornecidos para permitir que operações sejam realizadas no saldo de maneira controlada.
O método depositar()
permite adicionar dinheiro ao saldo, mas apenas se o valor for positivo. O método sacar()
permite retirar dinheiro, mas também verifica se o valor é positivo e se há saldo suficiente. O método getSaldo()
é um "getter" que permite a outras classes obterem o saldo atual, mas sem a possibilidade de modificá-lo diretamente.
Além disso, o construtor da classe ContaBancaria
também impõe uma regra de que o saldo inicial deve ser maior que zero. Isso é parte do encapsulamento, pois garante que a conta bancária comece em um estado válido.
Encapsulamento também permite que a implementação interna de uma classe seja alterada sem afetar as classes que a utilizam. Por exemplo, se decidirmos mudar a forma como o saldo é armazenado ou calculado internamente na classe ContaBancaria
, não precisaríamos modificar o código de outras classes que dependem dela, desde que os métodos públicos permaneçam os mesmos.
Outro aspecto importante do encapsulamento é que ele permite a criação de "setters", métodos que permitem modificar o valor de uma variável de instância de maneira controlada. Por exemplo, se quisermos permitir a alteração do saldo, poderíamos adicionar um método setSaldo()
que incluiria validações antes de realmente alterar o valor.
Em resumo, o encapsulamento é uma prática essencial na programação orientada a objetos. Ele protege os dados de um objeto, mantém a integridade do objeto, facilita a manutenção e evolução do código e promove a reutilização do código. Ao projetar suas classes em Java, sempre aplique o encapsulamento para garantir um design de software robusto e confiável.
Para finalizar, é importante lembrar que o encapsulamento não é apenas sobre ocultar dados ou torná-los privados. Trata-se de definir uma interface clara e consistente para suas classes, o que torna seus objetos mais fáceis de entender e usar corretamente. O encapsulamento ajuda a prevenir o uso inadequado de uma classe e garante que as regras de negócio sejam aplicadas, tornando o software mais confiável e fácil de manter.
Agora responda o exercício sobre o conteúdo:
_Qual dos seguintes modificadores de acesso em Java permite que um membro de uma classe seja acessado apenas dentro da própria classe, conforme discutido no texto sobre encapsulamento?
Você acertou! Parabéns, agora siga para a próxima página
Você errou! Tente novamente.
Próxima página do Ebook Gratuito: