고급 언어 중에서 프로그램 방식으로 언어를 분류하면 주로 절차지향(procedural) 언어와 객체지향(object oriented) 언어로 나뉜다. 절차지향이 동사 중심이라면 객체지향은 명사 중심의 프로그래밍 방식이다. 절차지향 언어는 문제를 여러 개의 작은 함수로 나누어 그 문제를 해결한다. 반면에 객체지향 언어는 문제를 구성하는 객체를 만들어 이 객체들 간의 메시지 교환으로 그 문제를 해결한다.
[ 그림 7.42 ]
고객의 자동판매기 사용을 모의 실험하는 프로그램을 절차지향과 객체지향으로 생각해보자. 절차지향은 자동판매기에서 제품을 구입하는 과정을 시간의 순서에 따라 그 과정을 작게 나누어 처리하는 과정이다. 절차지향에서 전체 과정을 나누어 처리하는 단위를 함수(function)라 한다.
객체지향은 자동판매기에서 제품을 구입하는 과정 중 가장 중요한 자료를 중심으로 속성과 행동을 추출한다. 즉 자동판매기에서 가장 중요한 자료인 고객과 자판기를 객체로 간주하여 구매 과정에서 필요한 내용을 속성과 행동으로 나눈다. 고객 객체는 돈과 제품이라는 2개의 속성과 3개의 행동으로 구성되며, 자판기 객체는 2개의 속성과 4개의 행동으로 구성된다. 특히 자판기에서 돈을 검사하는 행동은 외부에서는 이용될 수 없고 자판기 내부에서만 이용되도록 한다.
[ 표 7.8 ]
함수는 일련의 명령을 모아 놓은, 해야 할 업무를 처리하는 동사 중심의 프로그램 단위이다. 반면, 객체는 자료와 일련의 처리 명령을 하나로 묶어 놓은 메소드로 구성되는 프로그램 단위로 함수보다 높은 수준의 모듈화 방법이라 할 수 있다. [ 표 7.8 ]은 절차지향 언어와 객체지향 프로그래밍 언어의 특징을 요약한 것이다.