안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이전 포스팅에서 Car 클래스에 4개의 타이어 객체를 4개의 필드로 저장했습니다.
동일한 타입의 값들의 경우 배열로 저장하는 것이 좋겠죠?
객체들도 배열로 관리하는 것이 코드를 깔끔하게 만들어 주겠죠?
class Car { | class Car {
//필드 | Tire[] tires = {
Tire frontLeftTire = new Tire("앞왼쪽", 6); | new Tire("앞왼쪽", 6),
Tire frontRightTire = new Tire("앞오른쪽", 2); | new Tire("앞오른쪽", 2),
Tire backLeftTire = new Tire("뒤왼쪽", 3); | new Tire("뒤왼쪽", 3),
Tire backRightTire = new Tire("뒤오른쪽", 4); | new Tire("뒤오른쪽", 4)
} | }
왼쪽을 오른쪽처럼 하면 보기에 더 깔끔하죠?
그리고
frontLeftTire는 tires[0]에 frontRightTire tires[1]같이 인덱스로 표현되므로
대입이나 제어문에서 활용하기 쉽습니다.
예를들어 인덱스[1]을 이용해서 KumhoTire로 교체하기 위해 아래처럼 작성할 수 있습니다.
tires[1] = new KumhoTire("앞오른쪽", 13);
tires 배열의 각 항목은 Tire 타입이므로 자식 객체인 KumhoTire 를 대입하면
자동 타입 변환이 발생하므로 아무런 문제가 없습니다.
배열의 타입은 Tire 이지만 질제 저장 항목이 Tire의 자식 객체라면 모두 가능합니다.
상속 관계에 있는 객체들을 배열로 관리하면 제어문에서 가장 많은 혜택을 봅니다.
전체 타이어의 roll() 메서드를 호출하는 Car 클래스의 run() 메서드를 for 문으로 작성할 수 있습니다.
이전 포스팅에서 작성한 Car 클래스의 타이어 필드를 배열로 수정하면 아래처럼 됩니다.
예제)
public class Car {
//필드
Tire[] tires = {
new Tire("앞왼쪽", 6),
new Tire("앞오른쪽", 2),
new Tire("뒤왼쪽", 3),
new Tire("뒤오른쪽", 4)
};
//메소드
int run() {
System.out.println("[자동차가 달립니다.]");
for(int i=0; i<tires.length; i++) {
if(tires[i].roll()==false) {
stop();
return (i+1);
}
}
return 0;
}
void stop() {
System.out.println("[자동차가 멈춤니다.]");
}
}
Car 클래스를 이용하는 CarExample 클래스도 간결하게 수정할 수 있습니다.
public class Example {
public static void main(String[] args) {
Car car = new Car();
for(int i=1; i<=5; i++) {
int problemLocation = car.run();
if(problemLocation != 0) {
System.out.println(car.tires[problemLocation-1].location + " HankookTire로 교체");
car.tires[problemLocation-1] = new HankookTire(car.tires[problemLocation-1].location, 15);
}
System.out.println("----------------------------------------");
}
}
}
'자바' 카테고리의 다른 글
JAVA 자바 강제 타입 변환 ( Casting ) / 자바 강제 타입 변환 (0) | 2017.03.12 |
---|---|
JAVA 자바 매개 변수의 다형성 (0) | 2017.03.12 |
JAVA 자바 타입 변환과 다형성 필드의 다형성 (0) | 2017.03.12 |
JAVA 자바 타입 변환과 다형성 자동 타입 변환(Promotion) (0) | 2017.03.12 |
JAVA 자바 protected 접근 제한자 (0) | 2017.03.12 |