5. Đóng gói trong lập trình C# hướng đối tượng

Tính đóng gói (encapsulation) trong lập trình C# hướng đối tượng là một khái niệm quan trọng, cho phép bạn ẩn thông tin chi tiết bên trong một đối tượng và chỉ tiết lộ các phương thức và thuộc tính cần thiết để tương tác với đối tượng đó. Tính đóng gói giúp bảo vệ dữ liệu và hành vi của đối tượng khỏi sự can thiệp trực tiếp từ bên ngoài.

Trong C#, bạn có thể sử dụng các phạm vi truy cập (access modifiers) để kiểm soát việc truy cập đến các thành phần (thuộc tính và phương thức) của một lớp. Có ba phạm vi truy cập chính:

  1. Public: Các thành phần được đánh dấu là public có thể truy cập từ bất kỳ nơi nào, bao gồm cả bên ngoài lớp.
  2. Private: Các thành phần được đánh dấu là private chỉ có thể truy cập từ bên trong lớp. Bên ngoài lớp không thể truy cập trực tiếp vào các thành phần private.
  3. Protected: Các thành phần được đánh dấu là protected có thể truy cập từ bên trong lớp và từ các lớp con kế thừa từ lớp đó.

Dưới đây là một ví dụ minh họa về tính đóng gói:

csharp
class BankAccount {
    private string accountNumber;
    private double balance;

    public BankAccount(string accNumber) {
        accountNumber = accNumber;
        balance = 0;
    }

    public void Deposit(double amount) {
        if (amount > 0) {
            balance += amount;
            Console.WriteLine("Deposit successful. New balance: " + balance);
        }
        else {
            Console.WriteLine("Invalid deposit amount.");
        }
    }

    public void Withdraw(double amount) {
        if (amount > 0 && amount <= balance) {
            balance -= amount;
            Console.WriteLine("Withdrawal successful. New balance: " + balance);
        }
        else {
            Console.WriteLine("Invalid withdrawal amount.");
        }
    }

    public void DisplayBalance() {
        Console.WriteLine("Account Balance: " + balance);
    }
}

class Program {
    static void Main() {
        BankAccount account = new BankAccount("123456789");

        account.Deposit(1000);
        account.Withdraw(500);
        account.DisplayBalance();
    }
}

Trong ví dụ trên, các thuộc tính accountNumberbalance của lớp BankAccount được đánh dấu là private, nghĩa là chúng không thể truy cập trực tiếp từ bên ngoài lớp. Thay vào đó, các phương thức Deposit, WithdrawDisplayBalance được sử dụng để tương tác với các thuộc tính này một cách an toàn và kiểm soát trong lập trình C# hướng đối tượng.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top