9. Lớp trừu tượng trong lập trình C++ hướng đối tượng

Trong lập trình C++ hướng đối tượng, Lớp trừu tượng (Abstract Class) là một loại lớp trong lập trình hướng đối tượng không thể được tạo thành các đối tượng cụ thể, mà thường được sử dụng làm lớp cơ sở cho các lớp con. Lớp trừu tượng chứa ít nhất một phương thức trừu tượng (abstract method), tức là một phương thức không có thân (body), chỉ có khai báo. Lớp trừu tượng thường định nghĩa một bộ hợp đồng cho các lớp con, yêu cầu các lớp con cài đặt các phương thức trừu tượng đã khai báo.

Để định nghĩa một lớp trừu tượng và các phương thức trừu tượng trong C++, bạn sử dụng từ khóa virtual= 0 sau khai báo của phương thức để chỉ định rằng phương thức đó là trừu tượng và phải được cài đặt bởi các lớp con.

Dưới đây là một ví dụ về cách sử dụng lớp trừu tượng trong C++:

cpp
#include <iostream>

// Lớp trừu tượng
class Shape {
public:
    virtual double calculateArea() = 0;  // Phương thức trừu tượng
};

// Lớp dẫn xuất từ lớp trừu tượng
class Circle : public Shape {
private:
    double radius;

public:
    Circle(double r) : radius(r) {}

    double calculateArea() override {
        return 3.14159 * radius * radius;
    }
};

// Lớp dẫn xuất khác từ lớp trừu tượng
class Rectangle : public Shape {
private:
    double width;
    double height;

public:
    Rectangle(double w, double h) : width(w), height(h) {}

    double calculateArea() override {
        return width * height;
    }
};

int main() {
    Circle circle(5.0);
    Rectangle rectangle(4.0, 6.0);

    Shape* shapes[2];
    shapes[0] = &circle;
    shapes[1] = &rectangle;

    for (int i = 0; i < 2; ++i) {
        std::cout << "Diện tích: " << shapes[i]->calculateArea() << std::endl;
    }

    return 0;
}

Trong ví dụ trên, lớp Shape là lớp trừu tượng với phương thức trừu tượng calculateArea(). Lớp CircleRectangle là các lớp dẫn xuất từ Shape và đã cài đặt phương thức calculateArea() theo cách thích hợp. Trong hàm main, chúng ta tạo một mảng con trỏ shapes trỏ tới các đối tượng CircleRectangle, và gọi phương thức calculateArea() của từng đối tượng để tính diện tích.

Leave a Comment

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

Scroll to Top