C와 객체지향

사실  C로 프로그램을 작성하면 전체적으로 평평한 구조가 된다.

  • 코드가 몇 백줄 단위가 되어도 여기저기 보면 유사한 코드
  • 유사한 함수같은데 내용이 달라서 숫자로 구분하는 함수(put(). put2(), …)
  • 내부 처리 로직을 공통화할 수 있지만 동작 제어를 위해 다향의 인자가 필요한 함수
  • 사용 데이터가 전역 변수로 연결돼 있고 그래서 독립성이 전혀 없는 함수들
  • 의존 관계가 높아서 개별적 테스트가 어려운 함수들

C에서는 특정 내용을 처리하기 위해 함수라는 것이 존재하고 이를 이용해 프로그램을 구조화 할 수 있다고 배웠고, 그렇다고 하는데 왜 이런 식이 될까요? 사실 이럴 때 배워둬야 하는 것이 디자인 패턴입니다. 근데 보통 C를 배울 때 안배우죠. ㅇㅅㅇ;

많은 디자인 패턴은 객체 지향 언어에 사용되는 것이 전제로 하기 때문에 C와는 아무 상관 없다고 생각하는 사람들이 많이 있습니다. (실제로 대학원에서 언어 좀 봤다고 하는 친구들도 죄다 자바만 보고 온 친구들이 많습니다. 심지어 C++ 제대로 할 줄 알면 괴물 보듯 보는 이상한 애들도 존재하는 상황에서 뭘…)

실제로, C도 객체 지향을 실현할 수 있습니다. (?!) 객체 지향을 잘 활용하면 프로그램의 구조가 크게 변화하고 각 부분이 독립적으로 작동하게끔 만들 수 있습니다.

하지만 그러자면 C로 객체 지향을 염두에 두고 프로그래밍할 수 있어야 합니다. 그래서 일단 객체지향을 실현하는 방법을 설명합니다. 그리고 실전에서도 유용하게 사용될 것이라고 여겨지는 디자인 패턴에 대해서도 알아보려 합니다.

Advertisements