이것이... 모른다고 하기엔 좀 아는 것도 같고, 설명을 하자니 또 모르는 것도 같고,,
참 어려운 개념인 것 같아요.
그래서 확인을 좀 해봐야 할 것 같은데... 제가 이해하기로는
오브젝트 입장에서는 클래스가 definition이 되고, 인스턴스 입장에서는 오브젝트가 definition이 되는..
즉, 클래스를 이용해서 오브젝트를 만들고 오브젝트를 이용해서 인스턴스를 만드는..
그래서, 클래스 : 오브젝트 = 오브젝트 : 인스턴스 이런 관계가 맞는 건지 궁금해요.
저는 이렇게 이해하고 있는데, 이게 맞는건가요?
댓글 3
-
andy
2009.06.23 00:25
-
진
2009.06.24 06:34
클래스, 오브젝트(객체), 인스턴스는 객체지향 프로그래밍(Object Orientation Programming) 이론 에서 사용되는 용어입니다.
OOP는 구조적 프로그램 개발의 단점을 보완하기 위해 나온 차세대 이론입니다.
구조적 프로그래밍이란 프로그램을 구성하는 함수를 미리 만들고, 이런 함수를 조합해 전체 프로그램을 만들어가는 방식입니다.
(ABAP에서는 FORM 을 조합해 하나의 프로그램으로 만듭니다.)
그러나 이런 함수(FORM)는 다른 프로그램에서 재사용하기 힘들고 특정 프로그램에서만 작동하는 경우가 대부분입니다.
그 이유는 DATA 때문입니다. 이것을 해결하기 위해 나온 개발 이론이 OOP입니다. 클래스는 "DATA+CODE" 로 구성되어 있습니다.
클래스 내부에는 데이터를 포함하고 있습니다. 클래스로 개발하기 위해서는 구조적 프로그래밍 방식으로 생각하면 안됩니다.
구조적 프로그램밍은 CODE(프로세스)에 치우치는 경향이 높습니다. 반면에 클래스는 DATA(객체)에 중점을 둡니다.
즉, 하나의 객체(Object)을 어떻게 만들고 제어할 것인가를 생각해야 합니다.
굳이 Class, Object, instance를 비유해서 설명하자면, 자동차를 Object로 볼 때 설계도를 Class로 볼수 있습니다.
그럼 instance란 무엇일까요. instance는 Class가 구현화 된 것입니다.
프로그램이 실행되기 위해서는 프로그램의 DATA와 CODE가 메모리에 반드시 올라가야합니다.
이렇게 올라간 메모리 공간을 instance라고 부릅니다. Object 당 instance는 1개 입니다.
즉 객체에 대해 고유한 값입니다. 객체를 구분하고 지칭할 때 보통 instance라는 용어를 사용합니다.
사람으로 비유한다면 주민등록번호, 성명 쯤 되겠네요.
-
rune
2009.08.18 05:44
클래스는 definition 선언으로 설계도를 만들고 인스턴스는 CREATE OBJECT 로 실체화 하는 것입니다. 그래서 한개의 클래스 선언(=설계도)로 여러개의 인트턴스(=실물)을 찍어낼수 있는거지요.....
^^ 굉장히 헷갈리고, 볼때 마다 새로운( 응 ?? ) OOP 죠..
뭐.. ABAP쪽에 국한하여 본다면..
클래스는 definition 맞구요. (실체를 추상화해 놓은 틀~ )
그 틀을 찍어 놓은, CREATE OBJECT 하는 순간에 (이를 고상한 말고, '인스턴스화하다'instantiation) OBJECT가 생성되는 거죠.
걍.. 오브젝트랑 인스턴스는 같은 거다 라고 생각하심 됩니다.
즉 ABAP상에서 나오는 '오브젝트'라는 용어는 일반 자바에서 얘기하는 '인스턴스'라고 이해하심 됩니다~