앞서 클래스는 설계도의 역할을 수행한다고 하였는데, 좀 더 클래스에 대해 알아보겠습니다.


클래스의 의의


 

우선 우리가 알고 있는 변수의 경우에는 "하나의" 데이터만을 저장하는 공간입니다.

 

이 하나의 데이터만을 저장할 수 있는 한계 때문에 "같은 종류"인 여러 데이터를 한 공간에 저장할 수 있는 배열이 등장합

 

니다. 여기서 같은 종류라는 한계에 다시 부딪힙니다. 따라서 서로 관련된 데이터라면 다른 종류의 데이터들이라도 한 공간

 

에 저장할 수 있도록 하는 구조체가 등장합니다. 하지만 구조체 또한 변수들만을 담을 수 있다는 한계가 존재합니다.

 

이에 클래스는 데이터(변수) 뿐만이 아닌 관련된 메서드(함수)들 또한 담을 수 있도록 한다는 것에 그 의의가 있습니다.


클래스 타입(사용자 정의 타입)


여러 대의 냉장고가 있을 때, 우리는 이 냉장고 한 대마다 온도, 너비, 높이 세 가지 특성을 각각 다뤄야 한다고 가정해보

 

겠습니다. 이때 우리가 일반적인 즉, 비객체지향적인 방식으로 다룬다고 할 때 다음 과정과 같을 것입니다.

 

변수 선언부

int temperature1, temperature2, temperature3;

String width1, width2, width3;

String height1, height2, height3;

 

여러 개의 변수가 선언됐으므로 이를 다시 배열로 선언

 

배열 선언부

int[] temperature = new temperature[3];

String[] width = new String[3];

String[] height = new String[3];

 

하지만, 이 방법에는 두 가지 문제가 존재합니다. 첫 번째는 온도는 온도끼리, 너비는 너비끼리, 높이는 높이끼리 묶여 한다

 

는 한계점이 존재하고, 두 번째는 저장 공간을 세 개나 차지해야 한다는 문제가 존재합니다.

 

다음은 객체지향적인 방식으로 다룰 때의 과정을 보겠습니다.

 

class Refrigerator {         

     int temperature;         

     String width;         

     String height;

}

 

객체 배열 선언

 

Refrigerator[] R = new Refrigirator[3];R[0] = new Refrigerator();

R[1] = new Refrigerator();

R[2] = new Refrigerator();

 

이러한 객체지향적인 방식을 통해 냉장고 한 대 마다의 온도, 너비, 높이를 한 저장 공간으로 다룰 수 있다는 차이점이 있습

 

니다! 서로 관련된 데이터 값들을 묶어줄 수 있고, 코드의 복잡도를 덜어낼 수 있다는 점에서 유지보수에 용이하다는 큰 강

 

점을 가지게 됩니다. 이것이 앞서 객체 생성과 사용(https://developer-vanilla.tistory.com/6) 글에서 언급되었던 참조 타입

 

즉, 원하는 타입을 직접 만들어 사용하는 사용자 정의 타입인 클래스 타입의 의의라고 할 수 있습니다.


요약


클래스의 다양한 측면

 

1. 설계도 역할

 

2. 변수 : 하나의 데이터 저장 공간

    배열 : 같은 종류의 여러 개의 데이터 저장 공간

    구조체 : 서로 관련된 다른 종류도 포함하는 여러 개의 데이터 저장 공간

    클래스 : 변수(데이터) + 메서드 저장 공간

 

3. 클래스 타입(사용자 정의 타입)

    서로 관련된 데이터들을 좀 더 강하게 묶어주고, 코드의 복잡도를 덜어 유지보수 용이(객체지향적)

+ Recent posts