day16_PolyArgumentTest

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

/**
 * 고객(Buyer)가 buy(Product p)메서드를 이용해서 Tv와 Computer를 구입하고,
 * 고객의 잔고와 보너스 점수를 출력하는 예제이다.
 * 보너스 점수는 제품가격의 10%
 * Tv의 가격은 100만원
 * Computer의 가격은 200만원
 * Buyer의 소유금액은 1000 만원
 * 다 풀고 나면 PolyArgumentTestEx 예제 해보기..
 * @author user
 *
 */

public class PolyArgumentTest {
	public static void main(String[] args) {
		Buyer b = new Buyer();
		
		b.buy(new Tv());
		b.buy(new Computer());
		
		System.out.println("현재 남은 돈은 " + b.money + "만원 입니다.");
		System.out.println("현재 보너스 점수는 " + b.bonusPoint + "점입니다.");
	}
}





class Product {
	int price; //제품의 가격
	int bonusPoint; //제품 구매시 제공하는 보너스 점수
	
	Product(int price){
		this.price = price;
		bonusPoint = (int)(price/10.0);	//보너스 점수는 제품 가격의 10%
	}
}

class Tv extends Product {
	Tv() {
		//조상 클래스의 생성자 Product(int price)를 호출한다.
		super(100);	//Tv의 가격을 100만원으로 한다.
	}
	
	//Object클래스의 toString()을 오버라이딩 한다.
	@Override
	public String toString() {
		return "TV";
	}
}

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

class Buyer {			//고객, 물건을 사는사람
	int money = 1000;	//소유금액
	int bonusPoint = 0;	//보너스 점수
	
	void buy(Product p) {
		if(money < p.price) {
			System.out.println("잔액이 부족하여 물건을 살 수 없습니다.");
			return;		//메서드를 종료한다.
		}
		
		money -= p.price;	//물건을 사게되면 소유금액에서 물건의 가격만큼 차감한다.
		bonusPoint += p.bonusPoint;	//물건을 사게되면 제품의 보너스 점수를 추가한다.
		System.out.println(p + "을 구입하셨습니다.");	//p.toString()
	}
}

출력결과

TV을 구입하셨습니다.
Computer을 구입하셨습니다.
현재 남은 돈은 700만원 입니다.
현재 보너스 점수는 30점입니다.

0개의 댓글

관련 채용 정보