앞서 클래스는 설계도의 역할을 수행한다고 하였는데, 좀 더 클래스에 대해 알아보겠습니다.
클래스의 의의
우선 우리가 알고 있는 변수의 경우에는 "하나의" 데이터만을 저장하는 공간입니다.
이 하나의 데이터만을 저장할 수 있는 한계 때문에 "같은 종류"인 여러 데이터를 한 공간에 저장할 수 있는 배열이 등장합
니다. 여기서 같은 종류라는 한계에 다시 부딪힙니다. 따라서 서로 관련된 데이터라면 다른 종류의 데이터들이라도 한 공간
에 저장할 수 있도록 하는 구조체가 등장합니다. 하지만 구조체 또한 변수들만을 담을 수 있다는 한계가 존재합니다.
이에 클래스는 데이터(변수) 뿐만이 아닌 관련된 메서드(함수)들 또한 담을 수 있도록 한다는 것에 그 의의가 있습니다.
클래스 타입(사용자 정의 타입)
여러 대의 냉장고가 있을 때, 우리는 이 냉장고 한 대마다 온도, 너비, 높이 세 가지 특성을 각각 다뤄야 한다고 가정해보
겠습니다. 이때 우리가 일반적인 즉, 비객체지향적인 방식으로 다룬다고 할 때 다음 과정과 같을 것입니다.
변수 선언부
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. 클래스 타입(사용자 정의 타입)
서로 관련된 데이터들을 좀 더 강하게 묶어주고, 코드의 복잡도를 덜어 유지보수 용이(객체지향적)
'java > 객체지향' 카테고리의 다른 글
5. 메서드(Method) 정의와 호출 (2) | 2023.01.13 |
---|---|
4. 클래스 변수, 인스턴스 변수, 지역 변수 (0) | 2023.01.13 |
2-1. (보충) 객체 배열 (0) | 2023.01.12 |
2. 객체 생성 및 사용 (0) | 2023.01.12 |
1. 객체(Object), 클래스(Class), 인스턴스(Instance) (0) | 2023.01.12 |