[c언어] C 언어에서의 추상화 구현 방법

C 언어는 절차 지향적 언어로, 객체 지향 프로그래밍에서 제공하는 추상화 기능을 직접적으로 지원하지는 않습니다. 하지만 C 언어에서도 일부 수단을 활용하여 추상화를 구현할 수 있습니다.

포인터 활용

포인터는 C 언어에서 추상화를 구현하는 강력한 수단입니다. 구조체를 사용하여 데이터와 관련된 여러 가지 정보를 묶을 수 있는데, 이러한 구조체를 포인터를 사용하여 추상화할 수 있습니다.

#include <stdio.h>

typedef struct {
    int width;
    int height;
} Rectangle;

void printArea(Rectangle *rect) {
    printf("사각형의 넓이: %d\n", rect->width * rect->height);
}

int main() {
    Rectangle r = {3, 5};
    printArea(&r);
    return 0;
}

함수 포인터

함수 포인터를 활용하면 함수를 변수처럼 사용할 수 있습니다. 이를 통해 다형성과 유사한 효과를 낼 수 있으며, 이는 추상화 개념과 밀접한 관련이 있습니다.

#include <stdio.h>

void greetInKorean() {
    printf("안녕하세요!\n");
}

void greetInEnglish() {
    printf("Hello!\n");
}

int main() {
    void (*greet)(void);
    greet = greetInKorean;
    greet();
    greet = greetInEnglish;
    greet();
    return 0;
}

전처리기 매크로

전처리기 매크로를 사용하여 추상화 기법을 적용할 수 있습니다. 코드 내에서 반복되는 값을 매크로 상수로 정의하면 코드를 더 추상화할 수 있습니다.

#include <stdio.h>
#define PI 3.14159

int main() {
    double radius = 5.0;
    double area = PI * radius * radius;
    printf("원의 넓이: %f\n", area);
    return 0;
}

C 언어는 직접적인 객체 지향적인 기능을 제공하지는 않지만, 포인터, 함수 포인터, 전처리기 매크로 등을 활용하여 유연한 추상화를 구현할 수 있습니다.

참고 자료