Programing/JAVA

JAVA 자바 용어 정리, 객체지향 용어 정리, Object, Class, Instance

리커니 2018. 7. 24.
반응형

JAVA 자바 용어 정리, 객체지향 용어 정리, Object, Class, Instance

 

이번 포스팅에서는 객체지향 프로그래밍 언어인 자바의

기본적인 용어에 대해서 정리하는 시간을 갖어보겠습니다.

 

저도 마찮가지고 대부분의 교육과정 혹은 학과과정에서도 객체지향 언어인

자바에서 사용하는 언어들에 대한 정확한 개념을 설명하지 않고

코드만 작성하여 용어를 대충 유추(?!) 하여 사용하는 경우가 많습니다.

 

예를들어 객체지향프로그래밍(Object Orient Programming)에서 Object가

뭘 의미하냐 라는 질문에 정확한 답을 낼 수 있는 경력자가 몇이나 있을까요?

클래스가 뭔가? 인스턴스가 뭔가 라는 질문도 마찮가지 입니다.

 

그래서 이번 포스팅의 목적은 객체지향프로그래밍 언어인 자바에서 사용하는

용어에 대한 질문을 받았을 때 정확히 대답할 수 있도록 개념을 잡는 것 입니다!

 

우선 Object 라는 용어를 보도록 하겠습니다.

사전적인 의미는 물건, 물체, 욕망, 목적, 목표 등입니다.

그럼 개발자들 사이에서 사용하는 Object는 뭘 의미할까요?

 

많이 들어보셨겠지만 '객체' 를 의미합니다. 그럼 객체는 뭔데요? 라는 질문을 할 수 있겠죠?

객체는. 우리가 만들려고 하는 대상.(개발자 입장에서..) 구현할려고 하는 것.

자바 개발자라면 구현하려는 클래스. 라고 정의할 수있겠네요.

 

이제 객체가 뭔데? 라는 질문을 받으시면,

'제가 구현해야되는, 구현하려고 하는 프로그램이요' 라고 답하시면 됩니다.

(자바 개발자만.. PM, PL 급의 대답은 달라야합니다. 하고자하는 것이 다르니..)

 

그럼 객체지지향프로그래밍에 대한 답도 할 수 있겠죠.

'내가 구현하려고 하는 프로그램 단위로(여기선 class) 

구현하려고 지향하는 프로그래밍 기법'  정도로 말 할 수 있겠네요.

물론 객체지향프로그래밍의 정의는 여타 다른 서적, 교육사이트 등에서

다르게 표현되기도 합니다. 자신이 이해할 수 있고 설명할 수 있는 개념을 잡도록 합시다.

 

Object의 구성요소는 뭐가 있을 까요?

Object의 정의를 '구현하려고 하는 프로그램' 이라고 위에서 말했습니다. 그럼 프로그램을

구현하기 위해서 필요한 것은 무엇이 필요할까요?

바로 '속성'과 '기능' 입니다.

 

 

 

예를 들어 스마트폰을 구현한다고 합시다.

핸드폰의 이름은 뭐고, 색상은 뭐고, 크기는 어떻고 등등 이러한 속성이 정해져야겠죠?

그리고 전화가 되야되고, 어플이 깔려야되고, 시간도 나와야되고..

이런 기능이 필요합니다.

속성과 기능으로 스마트폰이 구현되는 것이라고 생각하시면 됩니다.

 

Object는 구현하려고 하는 프로그램이고, 이 것은 속성과 기능으로 구현된다.

그럼 자바 개발자 입자에서 이를 바꿔 말해보겠습니다.

Object는 내가 구현해야되는 클래스인데..속성과 기능은 뭐지..?

변수와 메서드 입니다.

 

변수와 메서드로 클래스는 구성이 됩니다. 그리고 자바 개발자는 이 클래스를 구현하는 것이구요.

클래스는 '자바 개발자가 변수와 메서드를 가지고 구현한 것' 이라고 할 수 있겠네요.

 

마지막으로 인스턴스(Instance)란 무엇일까요?

자바에서는 클래스를 아무리 잘 구현 해 놓아도, 메모리 상에 올라가 있지 않으면

사용 할 수가 없습니다.

그래서 Spring에서는 다양한 annotation을 사용해서, 자바에서는 new 연산자를 사용해서

클래스를 메모리상에 '생성' 하게 됩니다.

이렇게 메모리 상에 생성된 클래스를 '인스턴스' 라고 합니다.

 

정리를 하면,

Object는 속성과 기능으로 구성된 내가 구현하고자 하는 것.

Class는 변수와 메서드로 구성된 자바개발자가 구현하고자 하는 것(그냥 클래스).

Instance는 메모리상에 생성된 Class 로 정의 할 수 있습니다.

 

의사소통 없이 혼자 구현을 하게되면 이런 용어를 알 필요성은 줄어들겠죠.

하지만 개발자들끼리 코웍을 하고 의사소통을 할 떄 정확한 의사소통을 하기 위해서는

용어의 정확한 개념 확립이 필요합니다.

 

개발도 중요하긴 하지만 용어에 대한 중요성을 한번 되짚고 넘어가도록 합시다!

반응형

댓글

💲 추천 글