언어 Design Pattern - 클래스 따라하기
요즘 객체지향 언어뿐만 아니라 요즘 나오는 언어들은 Class 제작을 지원하고 있습니다.
그러나 Class는 선언에 불과하고 그것을 사용할려면 객체를 만들어야 합니다.
구조체를 이용하면 Class와 비슷하게 사용할 수 있습니다.
다만, Class와 비슷하게 사용할 수 있어도 객체지향에서는 동적메모리와 같이 동적(Runtime)에 할당하고 헤제할 수 있지만 구조체로 Class와 비슷하게 사용할 경우 동적으로 할당 및 헤제를 할 수 없습니다.
typedef struct{
uint16_t sum;
void (*add)(uint16_t data);
void (*output)(void);
}sum_add_t;
static void add(uint16_t data);
static void output(void);
sum_add_t this = {
sum : 0,
add : add,
output : output
};
static void add(uint16_t data)
{
this.sum += data;
}
static void output(void)
{
printf("sum = %d", this.sum);
}
int main()
{
for(uint16_t i = 0; i < 256, i++)
{
this.add(i);
}
this.output();
return 0;
}
위에서 sum_add_t이 구조체라고 한다면 sum_add_t으로 만든 구조체 변수 this는 객체입니다. this선언과 동시에 함수들과 함수포인터를 연결 시켜주고 main문을 통해 0 ~255까지 더한값을 printf함수를 통해 출력합니다.
왜 Class처럼 사용해야 할까요? 만약 알고리즘 및 코딩이 바뀔일이 없다면 Class처럼 구현할 필요가 없습니다. 하지만 소프트웨어는 언제든 변경되어야 하므로 변경에 유연하게 대처하기 위해 위와 같은 방식을 이용합니다.
Author And Source
이 문제에 관하여(언어 Design Pattern - 클래스 따라하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@audgus47/C언어-Design-Pattern-클래스-따라하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)