[c언어] C 언어에서의 객체 지향 프로그래밍 예제 코드

C 언어는 주로 절차적 프로그래밍 언어로 알려져 있지만, 객체 지향 프로그래밍을 구현할 수 있는 기능을 제공합니다. 객체 지향 프로그래밍은 데이터와 함수를 하나의 단위인 객체로 결합하여 코드의 재사용성과 유지보수성을 향상시키는 프로그래밍 패러다임입니다.

구조체 (Structures)

C 언어에서 객체를 표현하는 가장 일반적인 방법은 구조체를 사용하는 것입니다. 구조체를 사용하여 데이터와 관련 함수를 함께 묶어 객체를 모델링할 수 있습니다.

#include <stdio.h>

// 객체를 나타내는 구조체
typedef struct {
    int data;
    void (*function)(int);
} Object;

// 함수 포인터를 이용한 객체 함수 정의
void object_function(int value) {
    printf("Object function called with value: %d\n", value);
}

int main() {
    Object obj;
    obj.data = 10;
    obj.function = &object_function;

    printf("Object data: %d\n", obj.data);
    obj.function(20);

    return 0;
}

위의 예제에서, 구조체를 사용하여 Object라는 객체를 정의하고, object_function이라는 함수 포인터를 객체의 함수로 정의했습니다.

참조 및 포인터 (References and Pointers)

C 언어에서 객체를 다룰 때 주의해야 할 점은 참조 및 포인터의 사용입니다. 구조체를 가리키는 포인터를 만들어 객체를 다룰 수 있습니다.

Object obj1;
Object *obj2 = &obj1;

obj2->data = 30;
obj2->function(40);

위의 예제의 obj2obj1을 가리키는 포인터입니다. -> 연산자를 사용하여 포인터를 통해 구조체 멤버에 접근할 수 있습니다.

이와 같이 C 언어에서 객체 지향 프로그래밍을 구현할 수 있지만, 보다 복잡한 객체 지향 프로그래밍에는 C++나 Java 같은 다른 언어를 사용하는 것이 좋습니다.

참고 문헌

  1. “Object-Oriented Programming in C”, link
  2. “Structure and Pointer in C”, link