c 와 c++ 의 차이점
C와 C++은 어떤 차이점이 있을까?
얘기를 공통점에서 출발할 수도 있겠지만 "이것도 똑같고, 저것도 똑같고"식의 설명은 같은 틀에서 나온
붕어빵을 가지고 생긴게 똑같은 이유를 마냥 신기해 하는 바로스러운 짓처럼 보이기 때문에 이는 생략하고
차이점부터 설명하도록 한다.
결론부터 얘기하자면 'C++ = C + 객체지향프로그래밍'이다
위 식이 등식이라는 말에 쌍수들고 반대할 사람은 많지만 그런 사람들은 이제 C++를 시작하는 사람들이
아니기 때문이고 처음에는 이런식으로 알아두고 나중에 점점 더 더해져가는 것이 둘 사이의 차이점을
지금 당장 심도있게 이해하는 것보다 앞에서도 얘기했듯이 느려보이지만 효율적이고 빠른 방법이다.
그럼 이 강좌가 C에 대해서 어느정도 알고 있는 분들을 기준으로 전개해 나간다고 했으므로 우리는
객체지향 프로그래밍이 뭔지만 알면, 둘사이의 차이점을 알 수 있을 것이다.
앞에서 우리가 만들고자 하는 프로그램의 기능적 정의를 마친다음에는 어떤 언어를 이용하여 프로그램을
만들지를 결정한다고 하였다. 그러나 사실 이사이에는 다음과 같은 것들을 고려해 주어야 한다.
대부분의 프로그래머들은 프로그램을 통째로 한방에 뚝딱해서 만들지 않는다.. 그 이유는 그렇게 하기가
상당히 어렵기 때문이다. 그럼 어떻게 하는지 알아보자. 프로그램을 크게 관련이 깊은 것끼리 묶어 몇조각으로 나눈다. 그런 다음 각 조각을 작업하기 용이하도록 좀더 세분화 시킨다. 이와 같은 과정을 반복하여 실제로 세분화된 조각들은 프로그래밍언
어 단 몇줄 만으로도 표현할 수 있게된다. 이런 세분화된 조각들의 대한 프로그래밍이 끝나면 전체 프로그램이 만들어지게 되는 것이다.
프로그램을 이렇게 나누는 이유가 단순히 통째로 프로그래밍하기가 어렵기 때문만은 아니다.
C언어를 공부하신 분들은 아시겠지만 재사용이나 디버깅등과 깊이 관련되어 있다.
그렇지만 그런 얘기는 여기서는 하지 않겠다. 좀 더 알 고 싶으신 분들은 다른 책을 참고 하시길...
(왠만한 C언어 입문서는 이런 내용들을 거의 포함하고 있다.)
그럼 프로그램을 세분화하는데는 무슨 기준을 사용할까?
앞에서 관련이 깊은 것끼리 묶어 세분화를 시작한다고 했는데..이처럼 애매모호한 말은 없는 듯 싶다.
다른 어떤 기준이 또 있는지는 잘 모르겠지만..C와 C++만을 비교하여 설명하면 다음과 같다.
C언어 같은 경우에는 어떠한 기능을 하는 프로그램을 기능적 측면에서 세분화 한다. 여기서 기능적
측면이라는 말이 세분화의 기준이 되는 것이다..예를 들어 계산기 프로그램을 만드는데 이를 C언어로
만든다(구현)고 하면 사용자로부터 숫자를 입력받는 입력기능 이를 가지고 계산하는 계산기능 그리고
그 결과를 화면에 보여주는 출력기능으로 나눌 수 있을 것이다.
다분히 기능적인 측면에서 프로그램을 세분화 한 것이다. 이렇게 나뉜 이들 입력기능, 계산기능,
출력기능에 대한 프로그램을 하면 계산기 프로그램이 되는 것이다.
물론 덧셈만 될 수 도 있고 미.적분까지 그래프로 보여주는 괜찮은 프로그램도 될 수 있겠지만..
어쨌든 C는 프로그램을 기능적인 측면에서 세분화한다는 것만 기억하자..
그럼 C++은 어떻게 프로그램을 만들까? C++은 객체로 프로그램을 나눈다.
객체가 뭔지는 뭘라도 C++은 객체로 프로그램을 나눈다는 것만 알아 두고 넘어 가자...
이 두가지를 알았다면 좀더 C/C++과 프로그램 세분화에 대하여 정확히 이해하도록 하자
앞에서의 설명은 꼭 C나 C++이 프로그램을 세분화시켜주는 것처럼 설명되어져 있다.
그렇게 이해한다고 뭐가 크게 잘못되는 것은 아니지만.. 정확히 얘기하면 프로그램 세분화는 전적으로
프로그래머가 하는 것이지 C나 C++과는 상관없는 얘기이다.
객체를 기준으로 프로그램을 세분화 시켜놓고 C로 그것을 구현하든 말든 그것은 프로그래머 맘데로이다.
잘 될지는 모르지만...
얘기인즉, C++은 객체를 기준으로 세분화된 프로그램을 구현하는데 적합하다는 얘기이다.
'C++ = C + 객체지향 프로그래밍'이라고 얘기했으므로 C++는 기능적인 측면에서 세분화한 프로그램도
구현할 수 있다. 단 C를 가지고 객체를 기준으로 세분화한 프로그램을 만들기가 가능할지 어떨지는 몰라도
그렇게 용쓸 필요는 없다는 얘기다.
이쯤 얘기를 듣다보면 눈치빠르신 분은 음~ 객체지향 프로그래밍이란 만들고자하는 프로그램을 객체를 기준
으로 세분화 한다음 이를 구현하는 프로그램 기법을 말하는 것이군~~하고 생각하실 것이다.