×

Tạo lớp (class) và đối tượng (object) trong C++

Trong lập trình C++, khái niệm về lớp (class) và đối tượng (object) là những thành phần cơ bản của lập trình hướng đối tượng. Việc sử dụng các lớp và đối tượng giúp cải thiện khả năng quản lý mã nguồn, tái sử dụng mã lệnh, và dễ dàng hơn trong việc mở rộng các ứng dụng.

Khái niệm về Lớp (Class)

Lớp là một khuôn mẫu hoặc một bản thiết kế để tạo ra các đối tượng. Nó định nghĩa các thuộc tính (properties) và phương thức (methods) mà các đối tượng thuộc lớp đó sẽ có.

Khai báo một lớp

Để khai báo một lớp trong C++, bạn sử dụng từ khóa class theo sau là tên lớp và một khối mã bao gồm các thành phần của lớp (thuộc tính và phương thức).

Ví dụ:

class Person {
public:
    std::string name;
    int age;

    void introduce() {
        std::cout << "Hi, my name is " << name << " and I am " << age << " years old." << std::endl;
    }
};

Thành phần của lớp

  • Thuộc tính (Properties/Attributes): Đại diện cho dữ liệu hoặc trạng thái của một lớp. Trong ví dụ trên, nameage là các thuộc tính.
  • Phương thức (Methods): Là các hàm thành viên của lớp, thực hiện các hành động hoặc thao tác liên quan đến đối tượng của lớp. introduce trong ví dụ trên là một phương thức.

Khái niệm về Đối tượng (Object)

Đối tượng là một instance cụ thể của một lớp. Khi bạn tạo một đối tượng từ một lớp, bạn đang tạo ra một bản thể mà bạn có thể thao tác với.

Tạo đối tượng từ lớp

Để tạo một đối tượng từ lớp đã khai báo, bạn chỉ cần sử dụng tên lớp như một kiểu dữ liệu, theo sau là tên đối tượng.

Ví dụ:

int main() {
    Person person1;                          // Một đối tượng của lớp Person
    person1.name = "John";                   // Gán giá trị cho thuộc tính name
    person1.age = 30;                        // Gán giá trị cho thuộc tính age
    person1.introduce();                     // Gọi phương thức introduce của đối tượng
    return 0;
}

Truy cập thuộc tính và phương thức

Bạn có thể truy cập các thuộc tính và phương thức của một đối tượng bằng cách sử dụng toán tử dấu chấm (.).

Tính đóng gói (Encapsulation)

Một trong những nguyên lý quan trọng của lập trình hướng đối tượng là tính đóng gói. Nó bảo vệ dữ liệu bên trong lớp bằng cách sử dụng các mức độ truy cập: private, protected, và public.

  • private: Chỉ có thể truy cập từ bên trong lớp.
  • protected: Có thể truy cập từ lớp con kế thừa.
  • public: Có thể truy cập từ bất kỳ đâu trong chương trình.

Ví dụ:

class Person {
private:
    std::string name;
    int age;

public:
    void setName(std::string newName) {
        name = newName;
    }

    void setAge(int newAge) {
        age = newAge;
    }

    void introduce() {
        std::cout << "Hi, my name is " << name << " and I am " << age << " years old." << std::endl;
    }
};

int main() {
    Person person1;
    person1.setName("Jane");
    person1.setAge(25);
    person1.introduce();
    return 0;
}

Tính kế thừa (Inheritance)

Lớp có thể kế thừa từ một lớp khác, nhận được tất cả các thuộc tính và phương thức của lớp cha. Điều này giúp tái sử dụng mã lệnh và xây dựng các hệ thống phức tạp hơn.

Ví dụ:

class Employee : public Person {
private:
    std::string position;

public:
    void setPosition(std::string newPosition) {
        position = newPosition;
    }

    void introduce() {
        Person::introduce();  // Gọi phương thức từ lớp cha
        std::cout << "I am an " << position << "." << std::endl;
    }
};

int main() {
    Employee emp1;
    emp1.setName("Alice");
    emp1.setAge(28);
    emp1.setPosition("Engineer");
    emp1.introduce();
    return 0;
}

Tổng kết

Lớp và đối tượng là các yếu tố cốt lõi trong lập trình hướng đối tượng với C++. Chúng giúp cấu trúc mã lệnh một cách hiệu quả, tận dụng tính năng của việc đóng gói, kế thừa và các nguyên lý cơ bản khác của lập trình hướng đối tượng để xây dựng các ứng dụng mạnh mẽ và dễ quản lý.

Comments