본문 바로가기
프로그래밍/C++

C와 C++의 차이, 절차지향과 객체지향의 차이점!!(객체지향 사용 이유)

by Hwan2 2019. 1. 17.
728x90
반응형

※ 이 글은 C언어를 공부하신 후 읽으시는 것이 좀 더 이해가 빨리 될 것임을 알려드립니다.

    또한 굳이 배우지 않았더라도 최대한 이해하기 쉽게 설명해 놓겠습니다.



이 둘의 차이점을 설명하기엔 너무나도 장문이 될 것 같으니 최대한 요약해서 설명해보겠습니다.!


우선 객체지향 언어를 사용한다는 가정하에 속도를 생각하시면 안됩니다. 

객체지향 언어를 사용하는 이유(제가 생각하는 이유)는 다음과 같습니다.


1. 효율적인 분산 개발

2. 그에 따른 각 개인의 포커싱으로 인한 질 좋은 코딩

3. 서로간의 협력과 조율

4. 완성 됐을 때의 유지보수


애초에 객체지향 언어는 프로그램 동작속도를 향상시키기 위해 개발된 언어가 아니라

위 같이 여러명이 개발할 때 효율적인 코딩을 위해 만들어진 언어라고 생각했으면 좋겠습니다.


학교 수업이든 책이든 객체지향하면 상속성, 다형성, 캡슐화, 정보은닉 에 대해 배우게 됩니다.

저 또한 그랬구요. 하지만 이론을 공부하고 "아~ 그렇구나...."하고 넘어가지만

정작 이걸 '왜 알아야 하는지, 왜 중요한지, 적용시킬 수 있는지 등......' 두루뭉실하게 알고

제대로 된 개념적립이 안된 체로 넘어가기 십상입니다.


위 개념들은 객체지향 언어를 공부하고 프로그램을 만들다 보면 자연스럽게 개념이 적립됩니다.

어찌보면 당연한 말들을 사람들이 알기 쉽게 개념을 만들어 놓고 알려주고는 있으나

이것이 객체지향 언어를 배우는데 있어서 거리감을 느끼거나 벽을 느끼게 해주는게 아닌가 싶습니다.


지금부터는 제가 생각하는 이유가 왜 그런지에 대해 말씀드리겠습니다.


C언어 같은경우는 다음과 같이 동작하게 됩니다.



(이미지는 구글 이미지중 괜찮은 이미지를 갖고 왔습니다. 출처는 밑에 남기겠습니다.)

즉, 여러 개의 함수들이 순차적으로 동작하고 결괏값을 도출해 내는 방식입니다.


이러한 특성때문에 속도가 빠르고 주로 포인터를 이용해 메모리의 주소값에 접근할 수 있다는 점에서 

고급언어이지만 중급언어라고도 합니다.


물론 객체지향언어도 결국 순차적으로 진행되는 것은 맞지만 시각적으로 봤을땐 그렇지 않이하며

절차지향 언어가 1만줄이 넘어가게 되면 감당이 안되게 됩니다. 유지보수, 수정 등이 어려우며 

구조체를 사용한다 해도 분명 한계가 있습니다.

또한 관리 측면에서도 구조체를 사용해 관리하는 것 보단 class를 이용해 관리하는 것이 편하며 

코드 작성과 사용시 편리하고 가독성도 차이가 있습니다.


그 외에도 차이점은 있지만 더 길어질 것 같아 생략하고 결론은!!

요구사항 단계에서 상황에 알맞은 언어를 선택해 사용하는 것이 좋다고 생각합니다.




다음은 객체지향 작동방법을 알아보겠습니다.

(2개의 사진 출처 : https://m.blog.naver.com/PostView.nhn?blogId=itbank_guys&logNo=220096586195&proxyReferer=https%3A%2F%2Fwww.google.com%2F)



위 사진을 보면 '고객'과 '자판기'를 분리하여 상호 작용을 통해 프로그램이 작동되는 걸 알 수 있습니다.

(이러한 개념을 적립한 것이 객체, 클레스, 인스턴스화 인데 class를 설명할 때 같이 설명하겠습니다.)


데이터가 상호 작용함에 따라 코드가 무거워질수록(코드 양이 많아질수록) 객체지향의 효율성은 증가하게 됩니다.

객체지향은 코드의 분할이 가능하며 분할된 코드를 여러 명이 맡아 개발함으로써 코드에 대한 질도 향상되고 개발시간도 단축됩니다.

때문에 프로그램 설계가 가장 중요하다고 생각되는 부분입니다. 

(프로그램 설계가 엉망이면 코드는 복잡해질 뿐만 아니라 가독성도 사라지고 다른 사람들이 만든 코드와 충돌이 일어날 수 있기 때문입니다.)


객체지향언어(JAVA, C++등)로 프로그램을 만들게 되면 자연스럽게 정보은닉, 캡슐화, 상속성, 다형성에 대해 알게 되고 절차지향과 객체지향의 차이점 또한 자연스럽게 알게 됩니다.


결론은 공부를 해서 프로그램을 만들어 보는 것이 답입니다.......

반응형

댓글


스킨편집 -> html 편집에서