C 언어에서 this 구현2

시간이 지나니 이전글에서 많은 부족함이 느껴 다시 한번 글을 쓰기로 했습니다. 


this는 객체지향 언어에서 class 자신을 나타냅니다. 자기 자신이기 때문에 별도의 이름을 갖는 다는 것도 좀 이상하기 때문에 this라는 키워드는 정말 잘 정한 것 같습니다. 


우리는 C에서 this라는 것을 활용해서 사용해보도록 하겠습니다. 다음과 같은 main.c 코드가 있습니다. uart 포인터를 얻어와 uart를 open하고, read, write, close하는 일을 절차적으로 진행하고 있습니다. 사용자의 입장에서는 사용하는 기능을 구현하는 객체의 이름을 알고 있어야 합니다. 따라서 여기서는 uart라고 명시했습니다.



uart의 header 파일입니다. driver_t라는 interface를 정의하고 본체 코드에서는 아마도 실제적인 기능을 구현할 것으로 보입니다.



이제 driver_t라는 interface를 구현하는 uart.c 본체(콘크리트) 코드입니다. 이 파일내 11번째 줄에서 uart라고 선언했는데요, 그 이유는 파일내에서 모두 this가 무엇을 의미하는지 알기 때문에 this라는 변수명으로 정의해서 사용하고 있습니다. 그리고 중요한 포인트가 있습니다. 바로 static 선언입니다. C에서 static으로 선언하면 extern이 되지 않습니다. 따라서 여기의 this는 현재 파일 외에서는 호출 할 수가 없습니다. 이 얘기는 다른 파일에서도 동일한 변수명, 즉 this를 자체적으로 사용 할 수 있다는 얘기가 됩니다. 물론 다른 파일의 this는 이 파일의 this와는 완전 별도의 변수가 되겠지요.



이런식으로 this와 static을 적당히 사용하면 객체지향 언어들 처럼 다형성을 어느정도 구현 할 수 있게됩니다. 



'▶ 이전글 > C Pattern' 카테고리의 다른 글

factory method 패턴  (0) 2018.01.31
C의 app 만들기 - 3 : app  (0) 2018.01.31
C의 app 만들기 - 2 : main에서 실제 사용하기  (0) 2018.01.25
C의 app 만들기 - 1 : app manager  (0) 2018.01.24
Builder 패턴  (0) 2018.01.17