..열심히 공부하세../JAVA 문법

[Buyer클래스 예제]

댄스댄스 2012. 5. 1. 15:11

package oop5super;

class Product{
    int price;      //상품가격
    int bonusPoint; //보너스점수
    Product(){}  
    Product(int price){
        this.price=price;
        bonusPoint=(int)(price/10.0);
    }
}
//=====================
class SmartTV extends Product{
    SmartTV()
    {
        super(200); //price=200 bonusPoint=20
    }

    public String toString() {
        return "SmartTV";
    }   
}
//=====================
class Computer extends Product{
    Computer(){
        super(150); //price=150 bonusPoint=15
    }
    public String toString(){
        return "Computer";
    }  
}
//=====================
class Audio extends Product{
    Audio(){
        super(100); //price=100 bonusPoint=10
    }
    public String toString(){
        //객체를 호출했을때 toString()메소드 호출
        return "Audio";
    }
}
//=====================
class Buyer
{
    int money=1000;//사용가능한 총금액
    int bonus=0;//누적된 보너스점수 합계
    Product[] item=new Product[10];//구매 상품 정보를 저장하는 공간
    int idx=0;
   
    //파생된 자식클래스의 객체는 부모클래스가 받을수 있다
    void buy(Product p)
    {
        if(money<p.price){
            System.out.println("잔액이 부족하여 물건을 구입할수 없음!!");
            return;
        }
        money=money-p.price; //money=1000-200
        bonus=bonus+p.bonusPoint;//bonus=0+20
        item[idx]=p;
        idx++;
        System.out.println(p+" 구입했음!!");
    }
   
    void summary()
    {
        int n;
        int hap=0;
        int bonushap=0;
        String str="";
        for(n=0; n<item.length; n++)
        {
            if(item[n]==null) break;
            hap=hap+item[n].price;
            bonushap=bonushap+item[n].bonusPoint;
            str=str+item[n]+" ";
        }
       
        System.out.println("구입하신 물품의 총 금액 :"+hap);
        System.out.println("구입하신 물품의 보너스 금액 :"+bonushap);
        System.out.println("구입하신 물품명 :"+str);
    }
}
//=====================
public class BuyerEx {
    public static void main(String[] args) {
       
        SmartTV smarttv=new SmartTV();//price=200 bonuspoint=20
        Computer computer=new Computer();//price=150 bonuspoint=15
        Audio audio=new Audio();//price=100 bonuspoint=10
       
        Buyer kim=new Buyer();
        kim.buy(smarttv);
        kim.buy(smarttv);
        kim.buy(computer);
        kim.buy(audio);
       
        kim.summary(); //남은금액, 보너스점수 요약
       
    }

}