day17_PolyArgumentTest2

육희영·2021년 10월 28일
0
package com.java1.day17;

/**
 * PolyArgumentTest 예제에서 Audio를 추가하자. 가격은 50 으로 하자.
 * 구입한 물품의 총 가격과 구입한 물품의 목록을 출력하자.
 * 다 풀고 나면 PolyArgumentTestEx 예제 해보기..
 */

public class PolyArgumentTest2 {
	public static void main(String[] args) {	
		Buyer3 b = new Buyer3();
		
		b.buy(new Tv3());
		b.buy(new Computer3());
		b.buy(new Audio3());
		b.summary();
	}
}

class Product3 {
	int price;
	int bonusPoint;
	
	Product3(int price) {
		this.price = price;
		bonusPoint = (int)(price/10.0);
	}
}

class Tv3 extends Product3 {
	Tv3() {
		super(100);
	}
	@Override
	public String toString() {
		return "Tv";
	}
}

class Computer3 extends Product3 {
	Computer3() {
		super(200);
	}
	@Override
	public String toString() {
		return "Computer3";
	}
}

class Audio3 extends Product3 {
	Audio3() {
		super(50);
	}
	@Override
	public String toString() {
		return "Audio3";
	}
}

class Buyer3 {
	int money = 1000;
	int bonusPoint = 0;
	Product3[] item = new Product3[10];	//구입한 제품을 저장하기 위한 배열..
	int i = 0;		//Product배열에 사용될 카운터..
	
	void buy(Product3 p) {
		if(money < p.price) {
			System.out.println("잔액이 부족하여 물건을 살 수 없습니다.");
			return;
		}
		money -= p.price;			//가진 돈에서 구입한 제품의 가격을 뺀다.
		bonusPoint += p.bonusPoint;	//제품의 보너스 점수를 추가한다.
		item[i++] = p;				//제품을 Product[] item에 저장한다.
		System.out.println(p + "을/를 구입하셨습니다.");
	}
	
	void summary() {	//구매 물품에 대한 정보를 요약해서 보여준다.
		int sum = 0;
		String itemList = "";
		//반복문을 이용해서 구입한 물품의 총 가격과 목록을 만든다.
		for(int i=0; i<item.length; i++) {
			if(item[i] == null) break;
			sum += item[i].price;
			itemList += item[i] + ",";
		}
		System.out.println("구입하신 물품의 총금액은 " + sum + "만원 입니다.");
		System.out.println("구입하신 제품은 " + itemList + "입니다.");
	}
}

출력결과

Tv을/를 구입하셨습니다.
Computer3을/를 구입하셨습니다.
Audio3을/를 구입하셨습니다.
구입하신 물품의 총금액은 350만원 입니다.
구입하신 제품은 Tv,Computer3,Audio3,입니다.

0개의 댓글

관련 채용 정보