자바로 무엇을 만들 때는 반드시 자바가 갖는 객체 지향의 골격 안에서 해야만 합니다.

자바와 같은 객체지향의 언어들은 실제 세상에 존재하는 사물이나 개념 등을 형상화하고

그 것들을 프로그램에서 사용하고자 할 때, 아주 잘 어울리도록 해주는 기본 골격을 갖고

있습니다.

예를 들면 자동차, 아르바이트생,정부의 보험정책, 롯데리아에서 파는 햄버거,

스타크래프트에 등장하는 질럿등의 객체(이외에도 우리 머리로 생각할 수 있는 모든 것을

 객체라고 부르기로 하겠습니다)를 형상화하고, 이것들을 프로그램 할 때 객체지향의

언어는 프로그램에서 이 객체가 아주 잘 어울리고, 이 객체를 쉽게 이해하도록 해줍니다.

 

반면에 객체지향적이지 않은 언어들은 그렇지 않습니다.

객체지향적이지 않은 대표적인 언어인 C언어를 생각해 보겠습니다.

 만약 독자 여러분들이 C언어로 자동차라는 것을 프로그램 한다고 했을 때 자동차에

관해서 어떻게 묘사할 것에 대해서 어려움을 느끼실 것입니다.

 , 자동차라는 것을 어떻게 구조화,형상화해 낼 것인지, 이 형상화된 자동차를 프로그램

에서 어떻게 읽고 쓸 것 인지에 대해 적잖이 고민을 해야 할 것입니다. 

독자 여러분이 C언어에 익숙하지 않아서 보다는 C언어 자체가 자동차라는 개념을 구조화

형상화 하기에는 적당하지 않기 때문입니다.

이는 얼핏 생각해 보아도 잘 어울리지 않는 다는 것을 알게 되는데, C언어로는 자동차

라는 객체의 개념을 한 곳으로 집중하기가 상당히 어렵기 때문입니다.

C언어를 이용해서 자동차를 형상화 한후에 이것에 대해서 프로그램에서 읽기 쓰기를

해야 한다면 자동차를 형상화 한 그것이 가질 수 있는 상태를 한 묶음으로 관리하고,

자동차를 형상화 한 그것이 할 수 있는 행위,기능들을 또다른 한 묶음으로 관리해야 합니다.

그리고 동시에 두 묶음을 아주 잘 관리하는 것 일 겁니다.

자동차가 가질 수 있는 상태에 대한 정보를 가지고 있는 데이터 스트럭쳐(data sturcture)

자동차가 할 수 있는 행위,기능을 의미하는 함수(function)을 설계해야 합니다.

그리고 데이터 스트럭쳐와 함수를 아주 잘 관리 해야 합니다.

하지만 C언어에는 두 묶음을 아주 적절히 관리할 수 있는 기능이 없습니다.

C언어 입장에서는 두 묶음간에는 아무 연관관계가 존재하지 않는 것입니다.

 

C언어를 사용하는 프로그래머는 최선을 다해서 두 묶음간에 연관을 지으려고 노력하겠지만

C언어와 같은 객체 지향적이지 않은 언어는 두 묶음간에 연관을 갖게 해주는 기본적인

골격이 없습니다. 자동차라는 것, 즉 객체를 구조화,개념화하는데는 잘 안 어울리는

것입니다.

 

자바에는 우리가 생각할 수 있는 모든 것들(객체라고 불러도 괜찮습니다.)을 적절하게

정의하고 개념화 할 수 있도록 하는 클래스 생성이라는 기능이 있습니다.

흔히 사용자 정의 데이터형 생성이라고 부르는 이 기능으로 사용하고자 하는 사물,개념등

이른바 객체를 프로그램에서 쉽게 사용할 수 있게 하고,또한 프로그램이 프로그래머의

생각과 아주 잘 어울리게 해줍니다.

Posted by
,