C++ Encapsulation

Giới thiệu về Encapsulation trong C++

Encapsulation, hay còn gọi là đóng gói, là một trong những nguyên tắc cơ bản của lập trình hướng đối tượng (OOP) trong C++. Nó cho phép bạn ẩn thông tin bên trong của một lớp và chỉ cung cấp các phương thức công khai để truy cập và sửa đổi dữ liệu đó. Điều này giúp bảo vệ dữ liệu tránh khỏi việc truy cập không đúng cách và tăng cường tính bảo mật của chương trình.

Định nghĩa

Trong C++, encapsulation được thực hiện thông qua việc sử dụng các biến thành viên (member variables) và phương thức (methods) trong một lớp. Các biến thành viên thường được định nghĩa là private (riêng tư) để ngăn không cho chúng bị truy cập trực tiếp từ bên ngoài lớp.

Cú pháp

Cú pháp cơ bản để định nghĩa một lớp với encapsulation trong C++ như sau:

class TenLop {
private:
    // Biến thành viên riêng tư
    int bienRiengTu;

public:
    // Phương thức công khai để truy cập biến
    void setBienRiengTu(int giaTri) {
        bienRiengTu = giaTri;
    }

    int getBienRiengTu() {
        return bienRiengTu;
    }
};

Ví dụ về Encapsulation

Dưới đây là một ví dụ cụ thể về việc sử dụng encapsulation trong C++:

#include 
using namespace std;

class Nguoi {
private:
    string ten;
    int tuoi;

public:
    // Phương thức thiết lập tên
    void setTen(string tenMoi) {
        ten = tenMoi;
    }

    // Phương thức thiết lập tuổi
    void setTuoi(int tuoiMoi) {
        if (tuoiMoi > 0) {
            tuoi = tuoiMoi;
        } else {
            cout << "Tuổi không hợp lệ!" << endl;
        }
    }

    // Phương thức lấy tên
    string getTen() {
        return ten;
    }

    // Phương thức lấy tuổi
    int getTuoi() {
        return tuoi;
    }
};

int main() {
    Nguoi nguoi1;
    nguoi1.setTen("Nguyen Van A");
    nguoi1.setTuoi(25);

    cout << "Ten: " << nguoi1.getTen() << endl;
    cout << "Tuoi: " << nguoi1.getTuoi() << endl;

    return 0;
}

Trong ví dụ trên, lớp Nguoi có hai biến thành viên tentuoi được định nghĩa là private. Chúng ta sử dụng các phương thức công khai setTen, setTuoi, getTengetTuoi để truy cập và thao tác với các biến này. Điều này đảm bảo rằng dữ liệu chỉ có thể được truy cập thông qua các phương thức được xác định rõ ràng.

Kết luận

Encapsulation là một khái niệm quan trọng trong lập trình hướng đối tượng, giúp tổ chức và bảo vệ dữ liệu trong một ứng dụng. Bằng cách sử dụng encapsulation, bạn có thể dễ dàng duy trì mã nguồn, cải thiện khả năng bảo trì và tăng cường tính bảo mật cho chương trình của mình.