본문 바로가기

Java

Java? 객체지향언어?

반응형

많은 분들이 자바를 시작할때, 책의 맨 앞장에는 자바에 대한 개략적인 설명과 객체지향언어에 대한 설명이 나온다.

실제로 매우 중요한 부분임에도 불구하고 그냥 아 이런건가보다 하고 대충 넘어간다음

어느정도 코딩에대해 조금씩 익숙해지면서 아 그때 그 말이 이말이었구나 하고 이해하는게 대부분이다.

물론 나도 그랬고,

 

따라서 내 생각도 정리할 겸, 대략적으로 누군가에게 도움이 되었으면 하는 바램으로 포스팅을 시작한다.

 

자바는 객체지향 언어이다.

C언어로 개발하다보니 객체 중심으로 코딩을 하게 되면 코드의 재 사용성이 높아지고 프로그램을 더욱 명확하고 쉽게 만들 수 있다는 것을 개발자들이 깨닫게 되고, 이렇게 설계하는 것을 객체지향설계 라 지칭했다.

 

그리하여 클래스라는 공간을 활용하여 코딩할 수 있도록 C를 개선하여 상속,캡슐화, 다형성 개념을 추가한 C++이라는 언어를 만들게 되고,

 

그 후 제임스 고슬링과 녹턴, 와스 ,프랭크 ,셰리든 등이 객체지향설계를 기반으로한 언어를 만들게 되는데 이것이 바로 java이다. 객체중심의 설계, 예외처리, 멀티스레딩, 바이트 코드 등 새로운 개념을 도입하였고, 초창기에는 Oak라고 불렀으나 1995년 Java라는 이름으로 바뀌어 지금까지 사용되고 있다.

 

여기서 계속 객체 객체 라고 말이 나오는데,

여기서 말하는 객체란 무엇일까.

참 간단한 질문임에도 불구하고 답이 쉽지 않다.

어떤 책에 보면 클래스는 객체를 만들어내는 틀이며, 객체는 그 클래스에서 찍어나온것 이라고 설명되어있다.

이것이 정확한 설명은 아니긴 하지만 초보자가 생각하기에는 이정도로만 생각해도 충분히 이해가 도움이 될 것이라 생각된다.

 

클래스라는 공간에 어떠한 객체에 대한 정의와 명세를 해 놓으면,

그 클래스를 사용하여 객체를 생성할 수 있기 때문이다.

 

코드에서 가장 쉬운 예를 들자면, new 연산자를 이용하여 생성한 것이 곧 객체이다.

public class Car{

    int handle;
    int door;
    int wheel;
}

 

위 Car 클래스를 보면 Car는 int형 handle, door, wheel을 가지고있다.

즉, 차는 핸들과 문, 바퀴를 가지고 있다 라고 정의해놓은것이다.

핸들이 몇개고 문이 몇개고 바퀴가 몇개를 가지는것은 이제 이 클래스를 사용할 사용자가 정의하는 것이다.

물론 상황에 따라 해당 클래스에서 값을 지정하고 수정할 수 있도록 제한을 할 수도 있지만 일단은 객체에 대한 개념을 잡기위한 설명이므로 그 설명은 나중으로 미루겠다.

 

그렇다면 이렇게 선언된 클래스는 어떻게 사용해서 객체로 만드느냐...

간단하다. 방금 전 객체는 new 연산자를 사용한다고 했다.

 

 

public class CarMain{

public static viod main(String[] args){

    Car c = new Car();
    c.handle=1;
    c.door=4;
    c.wheel=4;

}

 

이런식으로 사용할수가있는데, 메모리공간에 Car형 c라는 객체를 올린 뒤,

핸들의 갯수는 1개

문의 갯수는 4개

바퀴의 갯수는 4개

 

이런식으로 사용할 수 있는것이다.

 

이렇게 Car라는 클래스의 틀을 한번만 정의해두면 여러 형식으로 변형해가며 활용 가능하기때문에 매우 편리하다.

 

사실 객체지향이라는것은 이것보다 훨씬 복잡하고 활용범위가 넓다.

최대한 쉽고 간단하게 설명하려다 보니 이런 방법이 되었다.

하지만 처음 자바를 접하는 분이시라면, 한번에 모든것을 알기는 사실 불가능하고

이렇게 기본적인 사항부터 알아가서 하나하나 쌓아나가는것이 옳은 방법이라고 생각한다.

반응형

'Java' 카테고리의 다른 글

jdk 1.6 다운로드 링크  (0) 2014.04.11
RSS XML DOM 파싱  (0) 2013.11.13
표현식과 연산자  (0) 2013.05.28
JVM 메모리구조  (3) 2013.05.28
프로그램의 개념과 실행  (0) 2013.05.28