package oop09;

import java.util.Vector;

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 mileage=0;//누적된 마일리지점수 합계 
    //static Product[] item=new Product[10];//객체배열
    Vector item=new Vector();
 int idx=0;
 
 void buy(Product p){

  if(this.money<p.price){
            System.out.println("잔액이 부족하여 물건을 구입할수 없음!!");
            return;
  }
  this.money=this.money-p.price;
  this.mileage=this.mileage+p.bonusPoint;
  //item[this.idx++]=p;
  item.add(p);
  
  //System.out.print(p+" "+p.price);
  //System.out.println();
 }
 
 void refund(Product p){
  if(item.remove(p)){
   money+=p.price;//나의 총재산
   mileage-=p.bonusPoint;//마일리지 점수
   System.out.println(p+"반품!!");
  }
  else{
   System.out.println("반품할 품목 없음!!");
  }
 }
 
    void summary()
    {
        int n;
        int hap=0;
        int bonushap=0;
        String str="";
        //2)벡터를 이용했을경우
        if(item.isEmpty()){
         System.out.println("구입한 물건 없음");
         return;
        }
       
        for(n=0;n<item.size();n++){
   Product p=(Product)item.get(n);
   hap+=p.price;
   bonushap+=p.bonusPoint;
   str+=(n==0)?""+p:","+p;
  }
  System.out.println("구매하신 물품의 총금액은 "+hap+"만원");
  System.out.println("보너스점수 "+bonushap+"만원");
  System.out.println("구입하신제품은"+str+"입니다.");

        /*1)객체배열을 이용했을경우
        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 BuyEx {
 public static void main(String[] args) {
  SmartTV smarttv=new SmartTV();
  //Product()->SmartTV()->Product(200)
  //price=200 bonuspoint=20
  
  //System.out.println(smarttv);
  //System.out.println(smarttv.price);
  //System.out.println(smarttv.bonusPoint);
  
  Computer comp=new Computer();
  //Product()->Computer()->Product(150)
  //price=150 bonuspoint=15
  //System.out.println(comp);
  
  Audio audio=new Audio();
  //Product()->Audio()->Product(100)
  //price=100 bonuspoint=10
  //System.out.println(audio);
  
  //Product fa=new SmartTV();
  //System.out.println(fa.price);//200
  
  //SmartTV sm=new Product();오류
  
  
  //물건 구매
  Buyer kim=new Buyer();
  kim.buy(smarttv);
  kim.buy(comp);
  kim.buy(comp);
  kim.buy(audio);
  kim.summary();
  
  //물건 반품(나의 총액+, 보너스점수-
  kim.refund(audio);
  kim.summary();//총금액500 보너스점수 50
  
 }

}

'..열심히 공부하세.. > JAVA 문법' 카테고리의 다른 글

[예제] set, map 예제  (0) 2012.06.26
[35] JDBC  (0) 2012.05.15
[34] 제네릭 Generics  (0) 2012.05.08
[33] Java Collections Framework  (0) 2012.05.08
[32] Object 클래스  (0) 2012.05.04

+ Recent posts