본문 바로가기
진행중인 학습/자바의 정석_학습

자바의 정석_기초편 CHAPTER 6 中 9 ~ 12 (230814)

by 트레비봄 2023. 8. 14.
728x90
자바의 정석_기초편 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 학습.

 

728x90