[c++] 가상 함수를 이용하여 추상화(abstraction)된 설계
C++는 객체 지향 프로그래밍 언어로, 추상화된 설계를 위해 가상 함수를 사용할 수 있습니다. 이러한 기술을 사용하면 코드를 보다 모듈화하고 유연하게 만들 수 있습니다. 이번 글에서는 C++를 사용하여 가상 함수를 이용하여 추상화된 설계하는 방법을 살펴보겠습니다.
추상화란 무엇인가?
추상화란 복잡한 시스템이나 데이터를 간략화하여 표현하는 것을 말합니다. 프로그래밍에서는 이를 통해 사용자가 내부 구현에 대해 알 필요 없이 간편하게 인터페이스를 사용할 수 있습니다. C++에서 추상화된 설계를 하기 위해 가상 함수를 사용할 수 있습니다.
가상 함수로 추상화된 클래스 만들기
가상 함수를 이용하여 추상화된 클래스를 만들기 위해서는 가상 함수를 선언하고, 하위 클래스에서 해당 함수를 구현해야 합니다. 예를 들어, 도형을 나타내는 추상 클래스 Shape
을 만들어 보겠습니다.
class Shape {
public:
virtual double calculateArea() const = 0;
virtual void draw() const = 0;
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double calculateArea() const override {
return 3.14 * radius * radius;
}
void draw() const override {
// draw circle
}
};
class Square : public Shape {
private:
double side;
public:
Square(double s) : side(s) {}
double calculateArea() const override {
return side * side;
}
void draw() const override {
// draw square
}
};
위의 예제에서 Shape
클래스는 calculateArea
와 draw
라는 두 개의 가상 함수를 가지고 있습니다. 본문은 관련 클래스 Circle
과 Square
가 Shape
클래스를 상속하고, 각각의 함수를 구현하고 있습니다.
여기서 calculateArea
와 draw
함수는 각 도형마다 다르게 작동할 수 있으므로, 추상 함수로 정의하여 하위 클래스에서 해당 함수를 재정의할 수 있도록 합니다.
결론
C++의 가상 함수를 이용하여 추상화된 설계를 하는 방법을 살펴보았습니다. 이를 통해 유연하고 모듈화된 코드를 작성할 수 있으며, 객체 지향 프로그래밍의 핵심 개념을 잘 이해하고 활용할 수 있습니다.