객체지향적 관점 : 설계도

클래스는 객체의 속성과 기능을 정의한 '설계도'이며, 객체는 클래스를 바탕으로 실제로 메모리에 생성된 것이다. 달리 말해, 실제 세계의 사물을 '추상화'하여 공통된 속성과 기능을 설계도에 정의하는 것이다. 객체지향 언어를 배울 때 가장 많이 들었던 말이다. 직관적이라 이해하기도 쉽다. 그런데 실제로 메모리에 생성된 것이 객체라는 설명은 약간 의문이 든다. Java의 클래스도 JVM의 클래스 로더에 의해 메모리에 할당되기 때문이다. 클래스를 프로그래밍적 관점에서 바라보면 의문이 해소된다.

 

프로그래밍적 관점 : 사용자 정의 타입

프로그래밍적 관점에서 클래스는 여러 형태의 데이터를 저장하는 변수다. 즉, 기본 자료형 이외에 개발자가 임의로 정의할 수 있는 자료형이다. 프로그래밍 언어에서 데이터 저장형태의 발전과정은 다음과 같다.

1. 변수 : 하나의 데이터를 저장할 수 있는 공간
2. 배열 : 동일한 자료형의 데이터를 여러 개 저장할 수 있는 공간
3. 구조체 : (Java에는 없지만) 서로 다른 자료형의 데이터 여러 개를 저장할 수 있는 공간
4. 클래스 : 서로 다른 자료형의 데이터와 함수를 저장할 수 있는 공간

기본 자료형의 변수는 한 종류의 자료형 한 개만 저장할 수 있다. 그러나 클래스는 서로 다른 자료형을 담는 멤버변수 여러 개를 정의할 수 있을 뿐만 아니라 이와 관련한 메서드도 정의할 수 있다. 이는 개발자가 정의하기 나름이기 때문에 클래스를 사용자 정의 타입(자료형)이라고 한다.

+ Recent posts