C++ OOP

Giới thiệu về Lập trình Hướng Đối Tượng (OOP) trong C++

Lập trình hướng đối tượng (OOP) là một phương pháp lập trình mà trong đó dữ liệu và các phương thức xử lý dữ liệu được tổ chức thành các đối tượng. C++ là một ngôn ngữ lập trình hỗ trợ OOP, cho phép lập trình viên xây dựng các ứng dụng lớn với cấu trúc rõ ràng và dễ bảo trì. Hai khái niệm chính trong OOP là lớp (class) và đối tượng (object).

Định nghĩa Lớp và Đối tượng

Trong C++, một lớp là một kiểu dữ liệu người dùng được định nghĩa bởi người lập trình, chứa các thuộc tính (biến) và phương thức (hàm) liên quan đến thực thể mà lớp đó đại diện. Đối tượng là một thể hiện (instance) của lớp, tức là một bản sao cụ thể của lớp mà bạn có thể sử dụng trong chương trình.

Cú pháp khai báo lớp trong C++

Cú pháp khai báo lớp trong C++ có thể được mô tả như sau:

class ClassName {
    // Các thuộc tính
    // Các phương thức
};

Ví dụ về Lớp và Đối tượng

Dưới đây là một ví dụ đơn giản minh họa cách sử dụng OOP trong C++:

#include 
using namespace std;

// Khai báo lớp
class Dog {
    // Các thuộc tính
    public:
        string name;
        int age;

    // Phương thức
    public:
        void bark() {
            cout << "Woof! My name is " << name << " and I am " << age << " years old." << endl;
        }
};

int main() {
    // Tạo một đối tượng
    Dog myDog;
    
    // Gán giá trị cho thuộc tính
    myDog.name = "Buddy";
    myDog.age = 3;

    // Gọi phương thức
    myDog.bark();

    return 0;
}

Các tính năng chính của OOP trong C++

1. Đóng gói (Encapsulation)

Đóng gói là việc ẩn thông tin bên trong lớp và chỉ cho phép truy cập thông qua các phương thức công khai. Điều này giúp bảo vệ dữ liệu và giảm thiểu sự phụ thuộc.

2. Kế thừa (Inheritance)

Kế thừa cho phép một lớp (lớp con) “kế thừa” các thuộc tính và phương thức từ một lớp khác (lớp cha). Điều này giúp tái sử dụng mã và xây dựng các hierachy lớp hiệu quả.

class Animal {
public:
    void eat() {
        cout << "Animal is eating" << endl;
    }
};

// Lớp Dog kế thừa từ lớp Animal
class Dog : public Animal {
public:
    void bark() {
        cout << "Woof!" << endl;
    }
};

int main() {
    Dog myDog;
    myDog.eat(); // Gọi phương thức từ lớp cha
    myDog.bark(); // Gọi phương thức từ lớp con
    return 0;
}

3. Đa hình (Polymorphism)

Đa hình cho phép sử dụng phương thức của lớp con qua lớp cha. Điều này giúp tăng tính linh hoạt cho chương trình.

class Animal {
public:
    virtual void speak() {
        cout << "Animal speaks" << endl;
    }
};

class Dog : public Animal {
public:
    void speak() override {
        cout << "Woof!" << endl;
    }
};

void makeAnimalSpeak(Animal* animal) {
    animal->speak();
}

int main() {
    Dog myDog;
    makeAnimalSpeak(&myDog); // Gọi phương thức speak của lớp Dog
    return 0;
}

Kết luận

OOP là một trong những phương pháp lập trình mạnh mẽ và phổ biến trong C++. Nó cung cấp cách viết mã rõ ràng, có cấu trúc và dễ bảo trì. Qua các tính năng như đóng gói, kế thừa và đa hình, OOP giúp lập trình viên xây dựng những ứng dụng phức tạp một cách dễ dàng hơn.