728x90
객체 배열
많은 수의 객체를 다뤄야 할 때, 배열로 다루면 편리하다. 객체 배열 안에 객체가 저장되는 것은 아니고, 객체의 주소가 저장이 된다.
Tv tv1, tv2, tv3 -> Tv[] tvArr = new Tv[3];
길이가 3인 객체 배열 TvArr을 생성하면, 각 요소는 참조변수의 기본값인 null로 자동 초기화된다.
객체 배열을 생성하는 것은, 객체를 다루기 위한 참조변수들이 만들어진 것일 뿐, 아직 객체가 저장되지 않았다.
Tv[] tvArr = new Tv[3]; //참조변수 배열(객체 배열)을 생성
//객체를 생성해서 배열의 각 요소에 저장
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();
배열의 초기화 블력을 사용하면, 간하게 한줄로 만들 수 있다.
Tv[] tvArr = {new Tv(), new Tv(), new Tv()};
다루어야할 객체의 수가 많을 때는 for문을 사용한다.
Tv[] tvArr = new Tv[100];
for(int i=0; i<tvArr.length; i++}{
tvArr[i] = new Tv();
}
배열과 마찬가지로 객체 배열도 같은 타입의 객체만 저장이 가능하다.
clas Time{
int hour;
int minute;
float second;
}
위 코드는 시, 분, 초를 저장하기 위한 세 변수를 멤버변수로 갖는 Time클래스를 정의한 것이다.
비객체지향적 코드 | 객체지향적 코드 |
int hour1, hout2, hour3; int minute1, minute2. minute3; float second1, second2, second3; |
Time t1 = new Time(); Time t2 = new Time(); Time t3 = new Time(); |
int[] hour = new int[3]; int[] minute = new int[3]; float[] second = new float[3]; |
Time[] t = new Time[3]; t[0] = new Time(); t[1] = new Time(); t[2] = new Time(); |
1. 시, 분, 초는 모두 0보다 크거나 같아야 한다.
2. 시의 범위는 0~23, 분과 초의 범위는 0~59 이다.
조건들을 반영해서 Time클래스를 작성해본다면
package classTest;
public class Time {
private int hour;
private int minute;
private float second;
public void setHour(int hour) {
if (hour < 0 || hour > 23 ) return;
}
public void setMinute(int minute) {
if (minute < 0 || minute < 59) return;
}
public void setSecond(float second) {
if (second < 0 || second < 59) return;
}
}
제어자를 이용해서 변수의 값을 직접 변경하지 못하도록 하고 대신 메서드를 통해서 값을 변경하도록 작성한다.
값을 변경할 때 지정된 값의 유효성을 조건문으로 점검한 다음에 유효한 값일 경우에만 변경한다.
728x90
'Backend > Java' 카테고리의 다른 글
[Java] JVM 메모리 구조 / JVM 수행 과정 (1) | 2024.09.05 |
---|---|
[Java] Class 변수와 메서드 (0) | 2024.09.02 |
[Java] Class 란 / 인스턴스란 / 인스턴스의 생성과 사용 (0) | 2024.08.29 |
[디자인패턴] 프로토타입 패턴 [PPT 공유] (0) | 2023.11.21 |
[Java의 정석] 조건문과 반복문 1️⃣ (1) | 2023.11.19 |