brunch
매거진 JAVA 그림책

OOP란?

객체지향 프로그래밍(OOP) 언어 란 무엇인가요?

* 이 내용은 철저히 초심자를 위해 알기 쉽게 설명하는 것을 목적으로 하고 있습니다.

* 더 정확하고 자세한 개념은 다른 고수님들의 글들을 참고하시길 바랍니다.

* 그리고 이 글에서는 코드를 다루고 있지 않습니다.



요즘 프로그래밍 언어, 특히 자바를 배우는 사람들은 제일 먼저 맞이하게 되는 단어는 바로 객체 지향 언어입니다.

도대체 이것이 어떤 개념이고, 왜 필요한지 한번 알아보도록 하겠습니다.


여기서 객체는 모든 사물을 의미합니다.

이걸 중심적으로 하는 언어라는 건데, 우선 이 녀석이 왜 태어나게 된 건지 알아야 할 필요가 있겠죠?


이 시작점은 바로 소프트웨어 위기입니다.

하드웨어의 발전 속도 보다 소프트웨어의 발전 속도가 현저히 느리다는 것이죠.

가만히 생각해 보면 하드웨어는 1년에 굉장한 속도로 발전해 온 반면 소프트웨어는 그에 미치지 못했죠.

PC의 예만 보더라도 1년에 수 배를 뛰어넘는 속도와 용량의 하드웨어가 나왔지만, OS의 경우는 근 10년을 사용할 정도였으니 말이죠.


소프트 웨어는 왜 하드웨어만큼 효율적으로 생산하지 못하는 걸까?

를 고민하던 중 한 가지 차이점을 발견하게 됩니다.

바로 수제 스포츠 카와 공장에서 양산되는 자동차를 비교해 보면 알 수 있죠.

공장에서 양산되는 자동차는 미리 생산된 부품을 조립하여 완성하게 됩니다.

그리고 업그레이드가 필요한 부품은 그 부품만 업그레이드하여 조립하면 되죠.

하지만 수제 스포츠 카는 부품 하나하나를 직접 만들어서 작업하기에, 비슷한 모양의 다른 스포츠카를 만들거나 성능을 조금 올리고 싶어도 하나하나 다시 직접 만들어야 합니다.

프로그램 역시도 코드를 프로그래머가 하나하나 직접 만들어서 작업하기에 시간이 오래 걸리고, 발전의 속도도 느리다는 것이죠.


그래서 객체 지향 프로그래밍의 철학은 명확합니다.

각 코드를 모듈화 하여 ‘부품처럼’ 사용하자는 것입니다.

특 재활용할 부품은 그대로 사용하고, 핵심이 되는 부품만 업그레이드하여 조립하면 보다 빠른 속도의 개발이 가능하다는 것이지요.


정리하자면 객체 지향 언어는 남의 코드를 부품처럼, 가져다가 조립하듯이 프로그래밍한다는 개념을 가지고 있는 언어다라고 생각하시면 됩니다.

OOP 4대 특성 역시도 그러한 철학에 충실한 개념들이고, 자바 역시도 그러한 객체 지향언어의 철학을 아주 잘 따르고 있는 언어입니다.




keyword