○ 상품 구매 및 반품 프로그램
public class Test05_buyer {
public static void main(String[] args) {
// 상품 구매 및 반품 프로그램
// 1) 상품 만들기
// → Product 클래스
// → SmartTV 클래스
// → Notebook 클래스
// → HandPhone 클래스
// 2) 상품 진열하기
SmartTV tv= new SmartTV();
Notebook note= new Notebook();
Handphone phone= new Handphone();
// 3) 상품 구매하기
// → Buyer 클래스
Buyer kim = new Buyer();
kim.buy(phone); //150
kim.buy(note); //200
kim.buy(tv); //100
kim.buy(phone); //150
kim.buy(phone); //150
kim.buy(phone); //150
kim.buy(phone); //150
kim.buy(phone); //150
kim.disp();
System.out.println("-----------------------------------");
// 4) 반품하기
// → 상품을 중복해서 구매하지 않았다는 전제하에 반품
// → Order 클래스
Order lee = new Order();
lee.buy(tv);
lee.buy(note);
lee.buy(phone);
lee.disp();
System.out.println("<<<<<<<<<반품");
lee.refund(note);
System.out.println("<<<<<<<<<결과");
lee.disp();
}//main() end
}//class end
○ 상품 만들기
- Product 클래스를 상속받아서 SmartTV, Notebook, Handphone클래스 만들고 가격, 상품명 정하기
public class Product extends Object { //extends Object 생략가능
public int price; //상품가격
public int bonusPoint; //마일리지
public Product() {}
public Product(int price) {
this.price = price; //this.멤버변수=지역변수
this.bonusPoint = (int)(price*0.1); //상품가격의 10%를 보너스 점수로 책정
}//const end
}//class end
class SmartTV extends Product {
public SmartTV() {
super(100); //가격 : price=100 > bonusPoint=10
}
@Override
public String toString() {
return "스마트TV"; //상품명
}
}//class end
class Notebook extends Product {
public Notebook() {
super(200); //가격 : price=200 > bonusPoint=20
}
@Override
public String toString() {
return "노트북"; //상품명
}
}//class end
class Handphone extends Product {
public Handphone() {
super(150); //가격 : price=150 > bonusPoint=15
}
@Override
public String toString() {
return "핸드폰"; //상품명
}
}//class end
○ 상품 구매하기
- Buyer클래스 : 상품을 구매했을때 어떤 상품을 구매했는지 저장(나의 구매상품 목록)
① buy() : 상품 구매시 item에 구매목록 저장
→ 총재산 감소, 마일리지 증가, 재산보다 많이 구입하면 잔액부족 출력
② disp() : 구매한 상품 목록, 사용금액, 마일리지, 남은 재산 출력
public class Buyer {
private int myMoney=1000; //나의 총재산
private int myMileage=0; //나의 마일리지 점수(bonusPoint 누적)
private int i=0;
private Product[] item = new Product[10]; //구매한 상품 목록
public Buyer() {}
public void buy(Product p) {
item[i++]=p;
this.myMoney=this.myMoney-p.price; //나의 재산은 감소
this.myMileage=this.myMileage+p.bonusPoint; //나의 마일리지는 증가
//나의 재산보다 많이 구입하면 잔액부족이 뜨도록
if(this.myMoney<0) {
item[--i]=null; //잔액부족시 직전에 구입한 상품 삭제
this.myMoney=this.myMoney+p.price;
this.myMileage=this.myMileage-p.bonusPoint;
System.out.println("잔액부족");
}
}//buy() end
public void disp() {
//구매한 상품의 총 합계 금액
int hap = 0; //item[n].price > item[n](=p)이 가지고 있는 price
//구매한 상품 목록
StringBuilder shoplist=new StringBuilder();
for(int n=0; n<item.length; n++) {
if(item[n]==null) {
break;
}
shoplist.append(item[n].toString()+" "); //상품명
hap=hap+item[n].price;
}
System.out.println("구매 상품 목록 : " + shoplist);
System.out.println("사용금액 : " + hap);
System.out.println("나의 남은 재산 : " + this.myMoney);
System.out.println("나의 마일리지 : " + this.myMileage);
}//disp() end
}//class end
○ 반품하기
- Order클래스 : Buyer클래스 + 상품을 중복해서 구매하지 않았다는 전제하에 반품
① buy() : 상품 구매시 item에 구매목록 저장
→ 총재산 감소, 마일리지 증가, 재산보다 많이 구입하면 잔액부족 출력
② refund() : 상품이 목록에 존재하면 지우고, 재산 증가, 마일리지 감소
③ disp() : 구매한 상품 목록, 사용금액, 마일리지, 남은 재산 출력
import java.util.Vector;
public class Order {
private int myMoney=1000; //나의 총재산
private int myMileage=0; //나의 마일리지 점수(bonusPoint 누적)
private Vector<Product> item = new Vector<Product>();
public void buy(Product p) {
if(p.price>this.myMoney) {
System.out.println("잔액이 부족합니다!!");
return;
}
item.add(p);
this.myMoney=this.myMoney-p.price;
this.myMileage=this.myMileage+p.bonusPoint;
}//buy() end
public void refund(Product p) {
if(item.remove(p)) {
System.out.println(p.toString() + " 반품되었습니다");
this.myMoney=this.myMoney+p.price;
this.myMileage=this.myMileage-p.bonusPoint;
}else {
System.out.println("구매내역에 상품이 없습니다");
}//if end
}//refund() end
public void disp() {
if(item.isEmpty()) {
System.out.println("구매한 상품이 없습니다");
return;
}
int hap = 0;
StringBuilder shoplist=new StringBuilder();
for(int n=0; n<item.size(); n++) {
shoplist.append(item.get(n)+" ");
hap=hap+item.get(n).price;
}
System.out.println("구매 상품 목록 : " + shoplist);
System.out.println("사용금액 : " + hap);
System.out.println("나의 남은 재산 : " + this.myMoney);
System.out.println("나의 마일리지 : " + this.myMileage);
}//disp() end
}//class end
'Backend > JAVA_Basic' 카테고리의 다른 글
26. JAVA, File 클래스 (input, output) (0) | 2022.06.09 |
---|---|
24. JAVA, Thread 클래스 (Runnable 인터페이스) (0) | 2022.06.08 |
23. Java Collection Framework (List, Set, Map, generic) (0) | 2022.06.07 |
22. JAVA, 예외 처리 (Exception, try~catch, finally, throws) (0) | 2022.06.06 |
21. JAVA, 추상화 (추상 클래스, 추상 메소드, 인터페이스, 익명내부객체) (0) | 2022.06.05 |
댓글