Rumah  >  Artikel  >  Java  >  Pengaturcaraan Berorientasikan Objek || Enkapsulasi

Pengaturcaraan Berorientasikan Objek || Enkapsulasi

PHPz
PHPzasal
2024-07-18 12:11:021112semak imbas

Object Oriented Programming || Encapsulation

Seperti yang kita semua tahu bahawa enkapsulasi adalah salah satu daripada 4 tiang OOPS dan kita boleh menggunakannya untuk menyembunyikan data dan menambah beberapa sekatan untuk melaksanakan operasi pada pembolehubah contoh kelas yang mana kami ingin memastikan bahawa enkapsulasi telah dilakukan dengan sempurna.
Secara amnya Kami telah diberitahu bahawa kita perlu menyembunyikan pembolehubah untuk dibuat supaya tiada siapa yang boleh mengubahnya kecuali kelas itu sendiri di mana pembolehubah ini telah ditakrifkan. Jadi untuk mengakses pembolehubah ini di luar kelas (jika perlu) kami mentakrifkan kaedah pengambil dan penetap supaya kami boleh melaksanakan operasi yang diperlukan berkaitan dengan contoh vairbale itu.
Rujuk Kod Contoh Java di bawah::

// 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.");
        }
    }
}

Dalam contoh di atas, kami mempunyai 3 pembolehubah sebagai accountNumber, accountHolderName, baki sebagai kaedah persendirian dan kami telah mentakrifkan getter dan setter untuk setiap 3 ini supaya Jika digunakan kelas lain mahu menggunakan pembolehubah contoh, mereka boleh gunakan dengan mudah.
Tetapi bukan itu sahaja, andaikan kita mahu 2 lagi kaedah di sini juga supaya kita boleh mendeposit dan mengeluarkan akaun ini.
Sila ambil perhatian bahawa di sini kami tidak membincangkan keselamatan peringkat aplikasi dan kami mengandaikan bahawa pasukan kami telah melakukan tugas yang sempurna untuk memberi kebenaran kepada pengguna.
Jadi dengan dua kaedah baharu semasa melaksanakan kerja mengeluarkan dan mendepositkan amaun, kami akan cuba mengelak panggilan terus kepada contoh pembolehubah "baki". Disebabkan ini, kami mengemas kini ini dengan kaedah penetap kerana kaedah penetap memastikan bahawa jika mana-mana peraturan melanggar pembolehubah contoh, ia akan mengeluarkan pengecualian.
Di bawah adalah kod kaedah deposit dan pengeluaran yang akan kami tambahkan dalam kelas 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.");
        }
    } 

Ringkasan: Kami akan cuba mengelak daripada memanggil pembolehubah instance terus dalam kelas juga untuk memenuhi piawaian keselamatan dalam kod kami.

Atas ialah kandungan terperinci Pengaturcaraan Berorientasikan Objek || Enkapsulasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn