/ JAVAJUNGSUK

Ch7-29~30. 객체 → 배열

자바의 정석 기초편

0. 목차



Chapter7. 객체지향 프로그래밍Ⅱ

Ch7 - 29. 여러 종류의 객체를 배열로 다루기

Ch7 - 30. 여러 종류의 객체를 배열로 다루기 예제



Ch7 - 29. 여러 종류의 객체를 배열로 다루기


▶ 다형성의 장점

▷ 다형적 매개변수
▷ 하나의 배열에 여러 종류의 객체 저장
  • 보통 하나의 배열은 같은 타입만 저장 가능
  • 다형성을 이용하면, 조상 타입의 배열에 자손들의 객체 여러 개 저장 가능



Ch7 - 30. 여러 종류의 객체를 배열로 다루기 예제


▶ 장바구니 기능 : 구매한 총 금액, 구매한 상품

▷ 모든 제품의 조상 Product p로 다형적 매개변수 생성
▷ 배열 cart에 다형적 매개변수로 받은 객체를 저장
▷ 배열 하나로 여러 가지 객체 이용 가능
package baek;

public class Product2 {
Product2() {}

	int price;
	int point;
	
	Product2(int price) {
		this.price = price;
		point = (int) (price / 10.0);
	}
}

class Tv extends Product2 {
Tv() { super(100); }

	public String toString() { return "TV";	}
}

class Computer extends Product2 {
Computer() { super(200); }

	public String toString() { return "Computer"; }
}

class Buyer {
Buyer() {}

	int myMoney = 400;
	int myPoint = 0;
	
	Product2[] cart = new Product2[10];
	int i = 0;

	void buy(Product2 p) {
		if (myMoney < p.price) {
			System.out.println("잔액이 부족합니다.");
			return;
		} else {
			myMoney -= p.price;
			myPoint += p.point;
			
			cart[i++] = p;
			
			System.out.printf("[%s] 구매\n", p);
		}
	}
	
	void cartIn() {
		int sum = 0;
		String itemList = "";
		
		for (int i = 0; i < cart.length; i++) {
			if (cart[i] == null) { break; }
			else {
				sum += cart[i].price;
				itemList += "[" + cart[i].toString() + "] ";
			}
		}
		System.out.printf("총 금액 : %d만원\n", sum);
		System.out.printf("선택한 제품 : %s\n", itemList);
	}
}

class Act {
public static void main(String[] args) {
Buyer b = new Buyer();

		b.buy(new Tv());
		b.buy(new Computer());
		b.cartIn();
		
		System.out.printf("잔액은 %d만원 입니다.\n", b.myMoney);
		System.out.printf("잔여 포인트는 %d점 입니다.\n", b.myPoint);
	}
}

// console
[TV] 구매
[Computer] 구매
 금액 : 300만원
선택한 제품 : [TV] [Computer]
잔액은 100만원 입니다.
잔여 포인트는 30 입니다.