자바의 정석_기초편 CHAPTER 6 中 9 ~ 12 (230814)
6-9. 클래스의 정의 (1) - 데이터와 함수의 결합.
프로그래밍적인 관점에서 클래스의 정의와 의미를 살펴본다.
프로그래밍언어에서 데이터 처리를 위한 데이터 저장형태의 발전 과정.
변수 -> 배열 -> 구조체 -> 클래스
1. 변수 : 하나의 데이터를 저장할 수 있는 공간
2. 배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
3. 구조체 : 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간
4. 클래스 : 데이터와 함수의 결합 (구조체 + 함수)
6-10. 클래스의 정의 (2) - 사용자 정의 타입.
프로그래밍언어에서 제공하는 기본 자료형 외에 프로그래머가 서로 관련된 변수들을 묶어서 하나의 타입으로 새로 추가하는 것을 '사용자정의 타입' 이라고 한다.
자바와 같은 객체 지향 언어에서는 클래스가 곧 사용자 정의 타입이다.
기본형은 개수가 정해져 있지만 참조형의 개수가 정해져 있지 않은 이유는 프로그래머가 새로운 타입을 추가할 수 있기 때문이다.
int hour; // 시간을 표현하기 위한 변수
int minute; // 분
float second; // 초, 1/100 까지 표현하기 위해 float
위 코드처럼 시간을 표현하기 위한 변수 3개를 선언.
만일 1개가 아닌 그 외 (2개 이상) 의 개수를 추가할 때마다는 배열을 이용한다.
int[] hour = new int[3];
int[] minute = new int[3];
float[] second = new float[3];
배열로 처리하면 다룰 데이터의 개수가 늘어나더라도 배열의 크기만 변경해주면 되므로, 변수를 매번 새로 선언해줘야 하는 불편함은 없어진다.
만약 프로그램 수행 과정에서 시, 분, 초가 뒤섞이는 경우가 있을 수 있다. 이를 위해 시, 분, 초를 하나로 묶는 사용자정의타입, 즉 클래스를 정의해 사용한다.
class Time {
int hour;
int minute;
float second;
}
단 시간 데이터에는 추가적인 제약 조건이 있다.
1. 시, 분, 초는 모두 0보다 크거나 같아야 한다.
2. 시의 범위는 0 ~ 23, 분과 초의 범위는 0 ~ 59 이다.
이 조건을 반영하여 수행하길 바란다.
6-11. 선언 위치에 따른 변수의 종류.
1. 인스턴스 변수 : 클래스 영역에서 선언, 인스턴스를 생성할 때 만들어짐.
인스턴스마다 고유한 상태를 유지해야하는 속성의 경우, 인스턴스 변수로 선언한다.
2. 클래스 변수 : 클래스 변수를 선언하는 방법은 인스턴스 변수(iv) 앞에 static을 붙이기만 하면 된다.
클래스 변수는 인스턴스 변수와 달리 인스턴스를 생성하지 않고 언제라도 바로 사용할 수 있다는 특징이 있으며, '클래스이름.클래스 변수' 와 같은 형식으로 사용한다.
3. 지역변수 : 메서드 내 선언되어 메서드 내에서만 사용 가능하며, 메서드가 종료되면 소멸되어 사용할 수 없게 된다.
지역변수가 선언된 블랙 {} 내에서만 사용 가능하며, 블럭{} 을 벗어나면 소멸되어 사용할 수 없게 된다.
6장 이전에 선언한 변수들은 모두 지역변수임.
6-12. 클래스 변수와 인스턴스 변수
인스턴스 변수는 인스턴스가 생성될 때 마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로, 항상 공통된 값을 갖는다.
230814 학습.
'진행중인 학습 > 자바의 정석_학습' 카테고리의 다른 글
자바의 정석_기초편 CHAPTER 6 中 20 ~ 25 (230818) (0) | 2023.08.18 |
---|---|
자바의 정석_기초편 CHAPTER 6 中 14 ~ 17 (230816) (0) | 2023.08.16 |
자바의 정석_기초편 CHAPTER 6 中 1 ~ 8 (230811) (0) | 2023.08.11 |
자바의 정석_기초편 CHAPTER 5 中 12 ~ 24 (230809) (0) | 2023.08.09 |
자바의 정석_기초편 CHAPTER 5 中 1 ~ 6 (230807) (0) | 2023.08.07 |