OBJECTIVE ORIENTED란 한국말로 객체지향이란뜻이고 PROCEDURAL 이란 절차적 이란 뜻입니다. 두 개념이 현대 프로그래밍 세계의 양대 산맥이라 보시면 됩니다.
과거의 프로그래밍은 한마디로 프로그래머 개인의 취향과 직관에 크게 좌우되었죠. 즉, 모로 가도 서울만 가면 된다라는 식입니다. 내가 코드를 어떻게 짜든 돌아가기만 하면 된다입니다. 그러다 보니 어떤 특정의 규칙이라든가 룰이 없이 기대하는 출력만 뽑아내기 위해 갖가지 재주를 다 부리는거죠. 그러다 보니 어떤 특정 프로그래머가 짠 코드는 다른 프로그래머가 봐도 이해가 안되는 것입니다. 코드의 실행문이 이리갔다 저리갔다 왔다갔다 앞으로 갔다 뒤로 갔다 정신이 없죠. 이런 코드를 흔히 스파게티 코드라 부르는 경우도 있었죠. 스파게티 국수발처럼 죄다 엉켜있다라는 거죠. 라인이 길어지면 코드를 작성한 본인도 이해가 안되는 코드입니다. 그래서 이런 코드를 절차적 코드라 부릅니다. 즉, 어떤 한 절차를 수행한후 다음 절차로 뛰고 그후에 또 다른 절차로 뛰고..결국 절차와 절차가 모여서 프로그램을 이룹니다.
반면에 최근에 대세를 이루고 있는 객체지향이란 쉽게 말해서 절차가 중심이 아니라 테이터가 중심인 프로그래밍 기법입니다. 예를 들어 김밥을 만든다라는 프로그램을 짠다고 생각해보죠.
절차형 코드는
1. 김준비
2. 김에다 밥을 올린다.
3. 밥에다 쏘세지를 올린다.
4. 밥에다 다꽝을 올린다.
5. 말아준다
6. 먹기 좋게 자른다.
식이죠..즉, 어떤 수행해야될 절차들의 나열이란 거죠.
히지만 객체지향은 이런 절차가 아니라 데이터 즉, 객체라고 불리는 어떤 데이터 클래스를 만들어가는것으로 프로그래밍이 이루어 집니다.
예를 들면
1. 재료 클래스
– 김
– 다꽝
– 쏘세지
– 김말이
-밥
-칼
-도마
2. 노가다 클래스
– 재료를 올려라
– 김밥을 말다
– 말은 김을 자르다
이런식으로 먼저 비슷한 종류의 작업이나 재료를 하나로 묶은 여러개의 클래스를 만들어 놓는거죠. 그리고 그것들을 필요에 따라 불러 쓰는 겁니다.
재료.김
재료.밥
재료.다꽝
재료.쏘세지
노가다.재료를올려라
노가다.김밥을말다
노가다.김밥을자르다.
이런겁니다.
두가지 프로그래밍 기법의 가장큰 차이점은 절차형은 재사용이 불가능하다는거고 객체지향은 얼마든지 재사용이 가능하다는겁니다. 다음번에 누가 이번엔 삼각김밥을 만들어야 될땐 님께서 미리 만들어놓은 재료 클래스와 노가다 클래스에 살짝 몇가지 기능만 더 추가해서 다시 사용할수 있다라는거죠.