[Buyer클래스 예제]
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(); //남은금액, 보너스점수 요약
}
}