728x90
조상타입의 배열에 자손들의 객체를 담을 수 있다.
import java.util.Vector;
//--------------------------------------------------------------------------
class Product {
int price;
int bonusPoint;
Product(int price) {
this.price = price;
bonusPoint = (int)(price/10);
}
}
//--------------------------------------------------------------------------
class Tv extends Product {
Tv() { super(200); }
public String toString() { return "텔레비전"; }
}
//--------------------------------------------------------------------------
class NoteBook extends Product {
NoteBook() { super(300); }
public String toString() { return "노트북"; }
}
//--------------------------------------------------------------------------
class Audio extends Product {
Audio() { super(100); }
public String toString() { return "오디오"; }
}
//--------------------------------------------------------------------------
class Buyer {
int money = 1000;
int bonusPoint = 0;
Vector<Product> item = new Vector<Product>(); // 10개의 객체를 저장할 수 있는 Vector 인스턴스를 생성한다.
void buy(Product p) { // 제품을 구매하는 행위
if(money < p.price) {
System.out.println("돈이 모자라서 제품을 구매할 수가 없습니다.");
return;
}
money -= p.price;
item.add(p); // 구입한 제품을 Vector에 저장한다.
bonusPoint += p.bonusPoint;
System.out.println(p + " 을/를 구매하였습니다.");
}
void refund(Product p) { // 제품을 환불하는 행위
if(item.remove(p)) { // 제품을 반납한다.
money += p.price; //돈을 돌려 받는다.
bonusPoint -= p.bonusPoint; // 보너스점수를 돌려준다.
System.out.println(p + "을/를 반품하였습니다.");
} else {
System.out.println("구매하신 제품 중에 해당하는 제품이 없습니다.");
}
}
void summary() { // 구매한 정보를 보여주는 행위
int sum = 0;
String itemList = "";
if(item.isEmpty()) { // Vector가 비어있는지 확인한다.
System.out.println("구매하신 제품이 하나도 없습니다.");
return;
}
// Vector의 1번쨰에 있는 객체를 얻어 온다.
for(int i = 0; i < item.size(); i++) {
Product p = (Product)item.get(i);
sum += p.price;
itemList += (i == 0) ? "" + p : ", " + p;
}
System.out.println("구입하신 제품들의 총 구매비용은 " + sum + "만원입니다.");
System.out.println("구입하신 제품들은 " + itemList + "입니다.");
}
}
//--------------------------------------------------------------------------
public class PolyArgumentExam {
public static void main(String[] args) {
Tv tv = new Tv();
NoteBook nb = new NoteBook();
Audio ad = new Audio();
Buyer bu = new Buyer();
bu.buy(tv);
bu.buy(nb);
bu.buy(ad);
bu.buy(tv);
bu.summary();
System.out.println();
bu.refund(tv);
bu.summary();
}
}
import java.util.Vector;
//--------------------------------------------------------------------------
class Product {
int price;
int bonusPoint;
Product(int price) {
this.price = price;
bonusPoint = (int)(price/10);
}
}
//--------------------------------------------------------------------------
class Tv extends Product {
Tv() { super(200); }
public String toString() { return "텔레비전"; }
}
//--------------------------------------------------------------------------
class NoteBook extends Product {
NoteBook() { super(300); }
public String toString() { return "노트북"; }
}
//--------------------------------------------------------------------------
class Audio extends Product {
Audio() { super(100); }
public String toString() { return "오디오"; }
}
//--------------------------------------------------------------------------
class Buyer {
int money = 1000;
int bonusPoint = 0;
Vector<Product> item = new Vector<Product>(); // 10개의 객체를 저장할 수 있는 Vector 인스턴스를 생성한다.
void buy(Product p) { // 제품을 구매하는 행위
if(money < p.price) {
System.out.println("돈이 모자라서 제품을 구매할 수가 없습니다.");
return;
}
money -= p.price;
item.add(p); // 구입한 제품을 Vector에 저장한다.
bonusPoint += p.bonusPoint;
System.out.println(p + " 을/를 구매하였습니다.");
}
void refund(Product p) { // 제품을 환불하는 행위
if(item.remove(p)) { // 제품을 반납한다.
money += p.price; //돈을 돌려 받는다.
bonusPoint -= p.bonusPoint; // 보너스점수를 돌려준다.
System.out.println(p + "을/를 반품하였습니다.");
} else {
System.out.println("구매하신 제품 중에 해당하는 제품이 없습니다.");
}
}
void summary() { // 구매한 정보를 보여주는 행위
int sum = 0;
String itemList = "";
if(item.isEmpty()) { // Vector가 비어있는지 확인한다.
System.out.println("구매하신 제품이 하나도 없습니다.");
return;
}
// Vector의 1번쨰에 있는 객체를 얻어 온다.
for(int i = 0; i < item.size(); i++) {
Product p = (Product)item.get(i);
sum += p.price;
itemList += (i == 0) ? "" + p : ", " + p;
}
System.out.println("구입하신 제품들의 총 구매비용은 " + sum + "만원입니다.");
System.out.println("구입하신 제품들은 " + itemList + "입니다.");
}
}
//--------------------------------------------------------------------------
public class PolyArgumentExam {
public static void main(String[] args) {
Tv tv = new Tv();
NoteBook nb = new NoteBook();
Audio ad = new Audio();
Buyer bu = new Buyer();
bu.buy(tv);
bu.buy(nb);
bu.buy(ad);
bu.buy(tv);
bu.summary();
System.out.println();
bu.refund(tv);
bu.summary();
}
}
'Language > Java' 카테고리의 다른 글
[Java] 실습 (event) 상 하 좌 우키로 글자 움직이기 (0) | 2022.08.18 |
---|---|
[Java] 실습 (frame) (0) | 2022.08.16 |
[Java] 실습 (get, set) (0) | 2022.08.12 |
[Java] 정리 (상속(inheritance)) (0) | 2022.08.12 |
[Java] 실습 (단일 상속) (0) | 2022.08.12 |