[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
인터페이스는 각각 추상 클래스와 인터페이스 역할을 하며, 이를 상속받은 Circle
과 Square
클래스는 각 도형을 그리는 기능을 구현하고 있습니다.
이렇듯 C++에서 추상 클래스와 인터페이스를 활용하여 다형성을 효과적으로 구현할 수 있습니다.
참고문헌:
- https://en.cppreference.com/w/cpp/language/pure_specifier
- https://www.geeksforgeeks.org/pure-virtual-functions-and-abstract-classes-in-cpp/