[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 언어는 직접적인 객체 지향적인 기능을 제공하지는 않지만, 포인터, 함수 포인터, 전처리기 매크로 등을 활용하여 유연한 추상화를 구현할 수 있습니다.
참고 자료
- C Programming Language, Kernighan & Ritchie
- “Abstract Data Types in C” - GeeksforGeeks, https://www.geeksforgeeks.org/abstract-data-types-in-c/