JAVA

클래스[Classes]와 객체[Objects]

룸훼훼 2010. 8. 17. 16:19
반응형

클래스[Classes]와 객체[Objects]
객체지향 프로그래밍을 흔히 인간이 사고하는 방법대로 표기하기 위해서 탄생하였다고 한다. 실제 우리생활의 대부분이 이런 객체들로 구성되고 있는 것은 분명한 사실이다. 문법적인 차원에서의 클래스가 아닌 객체지향 프로그래밍적인 관점에서 본다면, 객체지향 프로그래밍에서의 클래스는 사용자가 원하는 의미 있는 데이터를 구하기 위한 하나의 데이터 구조라고 볼 수 있다. 그래서 클래스는 데이터와 함수를 가지고 있는 것이다. 더 간단히 이야기하면 데이터와 함수를 가지고 있는 사용자 정의 데이터 형이라고 이야기할 수도 있다. 객체지향 프로그래밍에서 클래스는 특정 종류의 객체내에 있는 변수와 메쏘드를 정의하는 일종의 틀, 즉 템플릿이다. 따라서, 객체는 클래스로 규정된 인스턴스로서, 변수 대신 실제값을 가진다. 클래스에 대한 중요한 몇가지의 개념들은 다음과 같다. -클래스는 전부 혹은 일부를 그 클래스 특성으로부터 상속받는 서브클래스를 가질 수 있으며, 클래스는 각 서브클래스에 대해 수퍼클래스가 된다. -서브클래스는 자신만의 메쏘드와 변수를 정의할 수도 있다. -클래스와 그 서브클래스 간의 구조를 "클래스 계층(hierarchy)"이라 한다. 객체는 객체지향 언어에서 한마디로 정의한다면 ‘클래스의 인스턴스’라 할 수 있다. 데이터와 함수로 이루어진 클래스를 실제로 사용하기 위한 인스턴스가 바로 객체인 것이다. 클래스가 하나의 청사진을 그린다면 객체는 이 청사진을 바탕으로 새롭게 생성된 건물이 되는 것이다. 사람의 경우를 예를 든다면, 사람이 가지는 데이터(이름, 나이, 성별)와 함수(먹다, 뛰다, 잠자다)를 정의한 사람 클래스를 정의하였다고 하자. 이 사람 클래스는 개개인을 만들어 내기 위한 청사진인 것이다. 이런 사람 클래스를 실제 이용하기 위해서 사람 클래스의 모든 데이터와 함수를 가진 홍길동’이라는 사람을 만들어 낼 때‘홍길동’을 바로 객체라고 한다는 이야기이다. 이렇게 만들어진 객체는 각각의 유일한 이름을 가지며, 행위와 정보를 저장하는 상태를 가짐으로 하여 각각의 객체들을 구분할 수 있게 된다. 객체지향 프로그래밍에서 객체는, 프로그램 설계 단계에서 최초로 생각해야 할 것으로서, 결국 프로세스에서 유도된 코드 단위들이다. 중간에, 각 객체는 일반화된 객체 클래스로 만들어지고 더욱 일반화된 클래스가 정의됨으로써, 객체가 모델을 공유하고 그 코드에서 클래스 정의를 재사용할 수 있게 한다. 각각의 객체는 특정 클래스 또는 그 클래스의 자체 메쏘드나 프로시저 그리고 데이터변수를 가지고 있는 서브클래스가 실제로 구현된 것, 즉 인스턴스이다. 그러므로 객체는 실제로 컴퓨터 내에서 수행되는 것을 말한다.
반응형