quinta-feira, 26 de setembro de 2024

Orientação a Objetos: Encapsulamento


 

Vamos dar continuidade ao assunto Programação Orientada a Objetos, e mostrar um exemplo de código Apex usando encapsulamento.

Encapsulamento é um conceito fundamental na programação orientada a objetos, e no Apex, a linguagem de programação utilizada na plataforma Salesforce, não é diferente. Encapsulamento ajuda a proteger os dados e a lógica interna de uma classe de acessos externos indesejados, permitindo que apenas métodos específicos possam interagir com esses dados.

Aqui está um exemplo simples de como você pode aplicar o encapsulamento em uma classe Apex:

public class ContaBancaria {
    // Atributos privados para impedir o acesso direto
    private String nomeTitular;
    private Decimal saldo;

    // Construtor para inicializar a conta
    public ContaBancaria(String nome, Decimal saldoInicial) {
        this.nomeTitular = nome;
        this.saldo = saldoInicial;
    }

    // Método público para depositar dinheiro
    public void depositar(Decimal valor) {
        if (valor > 0) {
            this.saldo += valor;
        } else {
            // Lançar uma exceção ou tratar o erro de valor inválido
        }
    }

    // Método público para sacar dinheiro
    public Boolean sacar(Decimal valor) {
        if (valor > 0 && this.saldo >= valor) {
            this.saldo -= valor;
            return true;
        } else {
            // Lançar uma exceção ou tratar o erro de saldo insuficiente
            // ou valor inválido
            return false;
        }
    }

    // Getters para acessar os atributos de forma controlada
    public String getNomeTitular() {
        return this.nomeTitular;
    }

    public Decimal getSaldo() {
        return this.saldo;
    }
}



Neste exemplo, os atributos `nomeTitular` e `saldo` são marcados como privados, o que significa que eles não podem ser acessados diretamente de fora da classe `ContaBancaria`. Em vez disso, métodos públicos como `depositar` e `sacar` são fornecidos para permitir que operações sejam realizadas nesses atributos de maneira controlada. Além disso, os métodos `getNomeTitular` e `getSaldo` permitem o acesso aos valores dos atributos, mas não permitem que sejam modificados diretamente, mantendo a integridade dos dados.

O encapsulamento não só protege os dados de manipulações indesejadas, mas também torna o código mais modular e fácil de manter. Ao expor apenas o que é necessário através de métodos públicos, você pode alterar a implementação interna da classe sem afetar o código que a utiliza, desde que a interface pública permaneça consistente.

Esperamos que este exemplo tenha ajudado a esclarecer como o encapsulamento pode ser implementado em Apex e como ele pode beneficiar o design do seu código. Para mais informações sobre boas práticas de programação e encapsulamento, você pode consultar recursos como a documentação Salesforce sobre o assunto.

No próximo post, vamos falar de abstração na Orientação a Objetos.

Forte abraço e até o próximo post.

Nenhum comentário:

Postar um comentário