[c++] 추상 클래스 및 인터페이스를 활용한 프로그래밍 예시

추상 클래스와 인터페이스는 C++에서 다형성(polymorphism)을 구현하고 객체지향 설계를 할 때 유용하게 활용됩니다. 이 문서에서는 추상 클래스와 인터페이스를 사용한 C++ 예시를 살펴보겠습니다.

추상 클래스(Abstract Class) 예시

#include <iostream>
using namespace std;

// 추상 클래스
class Shape {
public:
    virtual void draw() = 0;  // 순수 가상 함수
};

// 추상 클래스를 상속받은 구현 클래스
class Circle : public Shape {
public:
    void draw() override {
        cout << "원을 그립니다." << endl;
    }
};

class Square : public Shape {
public:
    void draw() override {
        cout << "사각형을 그립니다." << endl;
    }
};

int main() {
    Shape* shape1 = new Circle();
    shape1->draw();

    Shape* shape2 = new Square();
    shape2->draw();

    return 0;
}

인터페이스(Interface) 예시

#include <iostream>
using namespace std;

// 인터페이스
class Drawable {
public:
    virtual void draw() = 0;  // 순수 가상 함수
};

// 인터페이스를 구현한 클래스
class Circle : public Drawable {
public:
    void draw() override {
        cout << "원을 그립니다." << endl;
    }
};

class Square : public Drawable {
public:
    void draw() override {
        cout << "사각형을 그립니다." << endl;
    }
};

int main() {
    Drawable* shape1 = new Circle();
    shape1->draw();

    Drawable* shape2 = new Square();
    shape2->draw();

    return 0;
}

위 예시에서, Shape 클래스와 Drawable 인터페이스는 각각 추상 클래스와 인터페이스 역할을 하며, 이를 상속받은 CircleSquare 클래스는 각 도형을 그리는 기능을 구현하고 있습니다.

이렇듯 C++에서 추상 클래스와 인터페이스를 활용하여 다형성을 효과적으로 구현할 수 있습니다.

참고문헌: