blog.dopana

Back

Bài cuối trong loạt C++ cơ bản. Lớp gộp dữ liệu và các hàm thao tác trên dữ liệu đó thành một khối duy nhất — trái tim của lập trình hướng đối tượng.

Lớp là gì?#

Lớp là bản thiết kế. Đối tượng là một thể hiện cụ thể được tạo từ bản thiết kế đó.

Access specifier#

  • public: — truy cập từ mọi nơi.
  • private: — chỉ truy cập bên trong lớp.

Dữ liệu thường để private, với các member function public làm giao diện. Đây là tính đóng gói.

class Counter {
private:
    int count = 0;

public:
    void increment() { ++count; }
    int get() const { return count; }
};
cpp

Code bên ngoài không chạm trực tiếp vào count — phải đi qua increment()get().

Constructor#

Constructor chạy khi đối tượng được tạo. Nó trùng tên lớp và không có kiểu trả về:

class Player {
public:
    std::string name;
    int level;

    Player(std::string n, int l) : name(n), level(l) {}
};
cpp

Danh sách khởi tạo member : name(n), level(l) gán giá trị cho các member. Giờ đối tượng cần tham số:

Player p("Ada", 5);
cpp

Method#

Member function khai báo trong lớp thao tác trên chính đối tượng đó. Hậu tố const hứa method không sửa đổi đối tượng:

int getLevel() const { return level; }
cpp

Đóng gói trong thực tế#

class BankAccount {
private:
    double balance = 0;

public:
    void deposit(double amount) {
        if (amount > 0) balance += amount;
    }

    double getBalance() const { return balance; }
};
cpp

Số dư không thể bị đặt âm từ bên ngoài — lớp tự kiểm soát dữ liệu của mình.

Kết luận#

Vậy là xong loạt C++ cơ bản: chương trình đầu tiên, biến và kiểu, luồng điều khiển, hàm, con trỏ và tham chiếu, và giờ là lớp. Viết chương trình nhỏ với từng khái niệm và tiếp tục — thư viện chuẩn và STL là bước tiếp theo tự nhiên.

Tài liệu tham khảo#