객체[Object]와 인스턴스[Instance]
객체와 인스턴스는 객체지향 프로그래밍에서는 거의 비슷한 개념으로
사용되지만 엄밀히 말하면 조금은 차이가 있는 개념이다.
객체지향 프로그래밍이 생성된 원인이 사람의 사고와 가장 비슷하게
프로그래밍을 하기 위해서라고 할 수 있다.
즉 우리 실생활의 모든 것들이 전부 객체로 이루어진 것이다.
넓은 의미에서의 객체라는 것은 보고 만질 수 있고,
이해할 수 있으며 생각이나 행동이 추구하는 바를 의미한다.
즉 객체라는 것은 우리가 인지 하고 있는 구체적인 사물이나 시스템이될 수도 있고,
구체적이지만 물리적으로 경계가 모호한 강, 안개 등도 객체라 할 수 있는 것이다.
인스턴스*
인스턴스란, 예로 우리는 하나의 청사진이 되는 클래스를 정의하면 이 클래스에서
각각 구별이 되는 인스턴스를 얼마든지 만들어 낼 수 있는 것이다.
사람이라는 클래스가 있다면 세계 50억명 이상의 각 개인들의 인스턴스가 있는 것이다.
즉 인스턴스란 클래스의 정의를 통해 만들어진 객체를 의미하는 것이다.
class Test
{ Person p1; // Person 타입의 객체
p1 = Person(); // 인스턴스 }
*객체*
객체지향 프로그래밍적인 관점에서 객체는 클래스의 타입으로 선언되었을 때를 의미하는 것이고,
그 객체가 메모리에 할당되어 실제 사용될 때를 인스턴스라고 하는 것이다.
즉, 인스턴스는 추상화 개념 또는 클래스 객체, 컴퓨터 프로세스 등과 같은 템플릿이
실제 구현된 것이다.
인스턴스화는 클래스 내의 객체에 대해 특정한 변형을 정의하고,
이름을 붙인 다음, 그것을 물리적인 어떤 장소에 위치시키는 등의 작업을 통해,
인스턴스를 만드는 것을 의미한다. -몇몇 필자들은, 객체지향 프로그래밍에서
클래스를 인스턴스화 한다는 것이, 클래스의 구체적인 인스턴스,
즉 객체를 만드는 것이라고 말한다. 그 객체는 컴퓨터 내에서 실행시킬 수 있는 실행 파일이다.
-객체지향 프로그램 언어인 자바에서는, 클래스로부터 인스턴스화된 객체를,
객체라는 말 대신에 역시 클래스라고 부름으로써 많은 사용자들을 혼란스럽게 한다.
즉 자바에서는, 특정한 클래스를 만들기 위해 클래스를 인스턴스화하며,
그것도 컴퓨터 내에서 동작하는 실행 파일이다.
-객체지향 프로그래밍 개념이 나오기 이전의 데이터 모델링이나 프로그래밍에서는,
인스턴스화라는 것이 관계형 데이터베이스 테이블 내에 새로운 엔트리를 만듦으로써
추상화된 객체로부터 실재(데이터가 들어있는) 객체를 만드는 것도, 한 가지 용례였다.
'JAVA' 카테고리의 다른 글
Java 과제 (0) | 2010.08.22 |
---|---|
생성자[constructor], 변수란? (0) | 2010.08.17 |
인터페이스[interface], 패키지[package],메쏘드[method],함수[function] (0) | 2010.08.17 |
클래스[Classes]와 객체[Objects] (0) | 2010.08.17 |
객체지향 프로그래밍[Object-Oriented programming] (0) | 2010.08.17 |