티스토리 뷰
다음 BasketTest의 메인 메소드에서 Buyer 클래스 객체 변수의 buy 메소드를 이용하여
각각의 제품을 구매한다. 이 때 각 물품은 Product 클래스를 상속받은
Tv, Audio, Computer 클래스의 객체이며 매개변수로 전달된다.
만약 buyer의 소지 금액이 모자라면 메시지를 출력하고 물품을 구매하지 않고
돈이 충분하다면 돈을 제하고 구매를 한다. 이 물품은 카트에 담긴다.
카트에 들어가는 제품은 3개로 초기화되고 용량이 부족해지면 2배로 용량을 늘린다.
public class BasketTest {
public static void main(String arg[]) {
Buyer b = new Buyer();
b.buy(new Tv());
b.buy(new Computer());
b.buy(new Audio());
// 100+200+50 = 350
b.buy(new Computer());
b.buy(new Audio());
b.buy(new Computer());
b.buy(new Tv());
// 200+50+200+100 = 550
b.summary();
}
}
class Product {
int price;
Product(int price) {
this.price = price;
}
}
class Tv extends Product {
Tv() {
super(100);
}
public String toString() {
return "tv";
}
}
class Audio extends Product {
Audio() {
super(50);
}
public String toString() {
return "Audio";
}
}
class Computer extends Product {
Computer() {
super(200);
}
public String toString() {
return "Computer";
}
}
class Buyer {
int money = 275;
Product[] cart = new Product[3];
int i = 0;
void buy(Product p) {
if (money < p.price) {
System.out.println("잔액이 부족하여 " + p.toString() + "를 살 수 없습니다.");
return;
} else {
money -= p.price;
add(p);
}
}
void add(Product p) {
if (cart.length == i) {
Product[] temp = new Product[cart.length * 2];
for (int i = 0; i < cart.length; i++) {
temp[i] = cart[i];
}
cart = temp;
}
cart[i++] = p;
}
void summary() {
int temp = 0;
for (int j = 0; j < i; j++) {
temp += cart[j].price;
}
System.out.print("구입한 물건 : ");
for (int j = 0; j < i; j++) {
System.out.print(cart[j].toString() + ",");
}
System.out.println("\n장바구니에 담긴 물건들의 총 가격은 " + temp);
System.out.println("남은 돈은 " + money);
}
}
결과 :
잔액이 부족하여 Computer를 살 수 없습니다.
잔액이 부족하여 Computer를 살 수 없습니다.
잔액이 부족하여 Computer를 살 수 없습니다.
잔액이 부족하여 tv를 살 수 없습니다.
구입한 물건 : tv,Audio,Audio,
장바구니에 담긴 물건들의 총 가격은 200
남은 돈은 75
'java,web study > 3주차 (7월 15일 ~21일)' 카테고리의 다른 글
Class (0) | 2013.07.16 |
---|---|
System 클래스 (시간 관련) (0) | 2013.07.16 |
Warpper 클래스, Auto Boxing (0) | 2013.07.16 |
다형성 - 다운캐스팅 실행 에러 (0) | 2013.07.16 |
7월 15일 미션 - 은행업무 프로그램 (0) | 2013.07.16 |