객체지향의 개념을 사용하기 전에는 대부분의 프로그램을 절차지향형으로 구현했다. 절차지향형 프로그래밍은 순서에 맞춰 단계적으로 실행하도록 명령어를 나열하는 방식을 말한다. 클래스를 사용한 후에는 객체지향형 프로그래밍 OOP : Object-Oriented Programming 방식이 주로 사용되는데, 이는 프로그램을 객체 단위로 수행하는 방식을 말한다. 다음과 같이 운전자가 이름과 면허 번호를 지정한 후 자동차를 운전하는 예를 살펴보면서 두 개념을 좀 더 쉽게 이해해 보자.
절차지향형 프로그램은 말 그대로 이야기를 순서대로 써 나가듯이 프로그램을 구성하는 방식이다. 물론 그림의 절차 4처럼 제어문을 사용해 실행 순서를 바꿀 수는 있지만, 그것 조차도 제어문의 절차로 진행되는 것이다. 반면 객체지향형 프로그램은 이 프로그램에서 사용되는 객체(자동차, 엔진, 운전자)를 생성하고, 각 객체에 포함된 데이터(컬러, 엔진, 이름, 면허번호, 종류)와 기능(구동하기, 전진하기, 정지하기, 운전하기, 장애물 감지하기)을 상호 호출함으로써 프로그램을 구성하는 방식을 말한다. 이때 각 객체에 포함된 데이터는 '속성' 또는 '필드'라고 하고, 기능은 '메서드'라고 한다.
이제 조금씩 두 구조의 차이를 알게 됐을 것이다. 하지만 객체 지향형이 그다지 좋아 보이지는 않는다. 그러면 이제 자동차 1대를 운전자 2명이 교대로 운전하는 프로그램의 구조를 상상해 보자. 객체지향형은 '운전자'객체를 1개 추가하고, '전진하기'와 '정지하기' 기능을 호출하면 끝이다.
하지만 절차지향형은 어떤 절차에 어떤 기능을 어떤 순서대로 넣어야 할지 막막하다. 이정도만으로도 충분히 절차지향형과 객체지향형의 차이점을 이해했을 것이다.
자바에서 제공하는 개체지향 문법 요소
객체지향 프로그래밍 언어인 자바는 프로그램을 객체 단위로 구성해 상호 연동시킴으로써 프로그램을 실행한다. 자바에서 제공하는 객체지향 문법 요소는 크게 '클래스 class'와 '인터페이스interface'가 있고 클래스는 다시 '일반 클래스'와 '추상 클래스 abstract class'로 나뉜다.
즉 크게 보면 2개(클래스. 인터페이스), 작게 보면 3개(일반 클래스, 추상 클래스, 인터페이스)의 객체지향 문법 요소를 사용한다. 객체지향 문법 요소는 객체의 생성과 관련된 요소라 생각하면 된다. 다시 말해 클래스나 인터페이스를 활용해 객체를 직•간접적으로 만들고 이를 활용해 프로글매을 실행한다는 의미다.추상 클래스와 인터페이스는 다음에 자세히 다루고, 여기서는 개체지향 문법 요소에는 클래스와 인터페이스가 있다는 것만 기억하자.