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 |