Maison >Java >javaDidacticiel >Programmation orientée objet || Encapsulation

Programmation orientée objet || Encapsulation

PHPz
PHPzoriginal
2024-07-18 12:11:021183parcourir

Object Oriented Programming || Encapsulation

Comme nous le savons tous, l'encapsulation est l'un des 4 piliers de OOPS et nous pouvons l'utiliser pour masquer les données et ajouter quelques restrictions pour effectuer l'opération sur la variable d'instance des classes pour lequel nous voulons nous assurer que l'encapsulation a été parfaitement réalisée.
Généralement, on nous a dit que nous devions masquer la variable pour que personne ne puisse la modifier, sauf la classe elle-même dans laquelle cette variable a été définie. Donc, pour accéder à cette variable en dehors de la classe (si nécessaire), nous définissons la méthode getter et setter afin de pouvoir effectuer les opérations nécessaires liées à cette instance de vairbale.
Référez-vous à l'exemple de code Java ci-dessous ::

// Class for a bank account Holder
public class BankAccountHolder {

    // Private fields to store account information
    private String accountNumber;
    private String accountHolderName;
    private double balance;

    // Public constructor to initialize a new BankAccount
    public BankAccount(String accountNumber, String accountHolderName, double initialBalance) throws Exception {
        setAccountNumber(accountNumber);
        setAccountHolderName(accountHolderName);
        setBalance(initialBalance);
    }

    // Public getter for accountNumber
    public String getAccountNumber() {
        return accountNumber;
    }

    // Private setter for accountNumber
    private void setAccountNumber(String accountNumber) throws Exception {
        if (accountNumber != null && !accountNumber.isEmpty()) {
            this.accountNumber = accountNumber;
        } else {
            throw new Exception("Invalid account number.");
        }
    }

    // Public getter for accountHolderName
    public String getAccountHolderName() {
        return accountHolderName;
    }

    // Public setter for accountHolderName
    public void setAccountHolderName(String accountHolderName) throws Exception {
        if (accountHolderName != null && !accountHolderName.isEmpty()) {
            this.accountHolderName = accountHolderName;
        } else {
            throw new Exception("Invalid account holder name.");
        }
    }

    // Public getter for balance
    public double getBalance() {
        return balance;
    }

    // Private setter for balance
    private void setBalance(double balance) throws Exception {
        if (balance >= 0) {
            this.balance = balance;
        } else {
            throw new Exception("Invalid initial balance.");
        }
    }
}

Dans l'exemple ci-dessus, nous avons 3 variables comme accountNumber, accountHolderName, balance comme méthode privée et nous avons défini les getters et setters pour chacun de ces 3 afin que si utilisé, une autre classe souhaite utiliser le variables d'instance, ils peuvent facilement utiliser.
Mais ce n’est pas tout, supposons que nous souhaitions ici également 2 méthodes supplémentaires pour pouvoir déposer et retirer de ce compte.
Veuillez noter qu'ici nous ne discutons pas de la sécurité au niveau de l'application et nous supposons que notre équipe a fait le travail parfait pour autoriser l'utilisateur.
Ainsi, avec les deux nouvelles méthodes, tout en effectuant le travail de retrait et de dépôt du montant, nous essaierons d'éviter l'appel direct à la variable d'instance « solde ». Au lieu de cela, nous mettons à jour cela avec la méthode setter car la méthode setter s'assure que si l'une des règles n'est pas respectée pour la variable d'instance, elle annulera l'exception.
Vous trouverez ci-dessous le code des méthodes de dépôt et de retrait que nous ajouterons dans la classe BankAccountHolder.

 public void deposit(double amount) throws Exception {
        if (amount > 0) 
            int finalBalance = this.getBalance() + amount;
            setBalance(finalBalance);
        } else {
            throw new Exception("Deposit amount must be positive.");
        }
    }

    // Public method to withdraw an amount from the account
    public void withdraw(double amount) throws Exception {
        if (amount > 0 && amount <= this.getBalance()) {
            int finalBalance = this.getBalance() - amount;
            setBalance(finalBalance);
        } else {
            throw new Exception("Invalid withdrawal amount.");
        }
    } 

Résumé : Nous essaierons également d'éviter d'appeler la variable d'instance directement dans la classe pour répondre aux normes de sécurité à l'intérieur de notre code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn