검색결과 리스트
글
20130522 HCI 과제 완료
/*
sell 추가
Buyer 클래스에 sell(Product p) 메서드를 추가하라
*/
package polyargumenttest2;
class Product {
int price; // 제품의 가격
int bonusPoint; // 제품구매 시 제공하는 보너스점수
Product(int price) {
this.price = price;
bonusPoint = (int) (price / 10.0);
}
Product() {
price = 0;
bonusPoint = 0;
}
}
////////////////////////////////////////////////////////상품 추가 부분/////////////////////////////////////////////////////////////////////
// iPad 추가
class iPad extends Product {
iPad() {
super(90);
}
public String toString() {
return "iPad";
}
}
// Tv 추가
class Tv extends Product {
Tv() {
super(100);
}
public String toString() {
return "Tv";
}
}
// Computer 추가
class Computer extends Product {
Computer() {
super(200);
}
public String toString() {
return "Computer";
}
}
// Audio 추가
class Audio extends Product {
Audio() {
super(50);
}
public String toString() {
return "Audio";
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class Buyer { // 고객, 물건을 사는 사람
int money = 1000; // 소유금액
int bonusPoint = 0; // 보너스점수
//ArrayList al = new ArrayList();
Product[] item = new Product[10]; // 구입한 제품을 저장하기 위한 배열
int i = 0; // Product배열에 사용될 카운터
void buy(Product p) {
if (money < p.price) {
System.out.println("잔액이 부족하여 물건을 살수 없습니다.");
return;
}
money -= p.price; // 가진 돈에서 구입한 제품의 가격을 뺀다.
bonusPoint += p.bonusPoint; // 제품의 보너스 점수를 추가한다.
item[i++] = p; // 제품을 Product[] item에 저장한다.
System.out.println(p + "을/를 구입하셨습니다.");
}
// 판매를 진행하되, 물건을 구입한 적이 없으면 판매를 할 수 없음, 그 조건을 반드시 사용하도록 해야됨
void sell(Product p) {
int sellcount = 0;
// 배열 안에서 검색
System.out.println("[판매] : "+p+" 를 판매합니다. 실제 물품을 가지고 있는지 확인합니다");
// 배열에서 검색 진행
for (int i = 0; i < item.length; i++) {
// 배열에 해당 상품명이 있을 경우
if (item[i] == p) {
money += p.price; // 가진 돈에서 구입한 제품의 가격을 더함
bonusPoint -= p.bonusPoint; // 제품의 보너스 점수를 뺌
//System.out.println("해당 상품이 발견된 배열의 위치 : " + i);
System.out.println("[승인] : 물품 보유를 확인하였습니다.");
System.out.println("[알림] : "+p + "를 팔았다! 해당 금액은 " + p.price + ", 금액을 환불받아 잔액은 " + money + ", 포인트는 차감되어 다음과 같습니다 : " + bonusPoint);
sellcount++;
// 배열 재정렬 진행 (item 배열), i는 상품이 저장된 인덱스를 의미함, 기존 배열 위치에 있던 녀석을 다음 인덱스의 녀석으로 덮어버리고 마지막에 null 처리
for (int j = i + 1; j <= item.length; j++) {
if (item[j] != null) {
item[j - 1] = item[j];
} else {
item[j - 1] = null;
break;
}
}
}
}
//위 검색이 끝나고, 판매한 적이 없거나 구매하지 않은 물품일 경우 다음 메시지 출력
if (sellcount == 0) {
System.out.println("[오류] : 해당 물품을 구매하지 않았으므로 팔 수 없습니다. 판매룰 중단합니다.");
}
}
void summary() { // 구매한 물품에 대한 정보를 요약해서 보여 준다.
int sum = 0; // 구입한 물품의 가격합계
String itemList = ""; // 구입한 물품목록 초기화
// 반복문을 이용해서 구입한 물품의 총 가격과 목록을 만든다.
// 판매가 아닌 구매의 경우
for (int i = 0; i < item.length; i++) {
if (item[i] == null) {
break;
}
sum += item[i].price;
itemList += item[i] + ", ";
}
System.out.println("");
System.out.println("[상태 확인] - 보유물품 : " + itemList + " 총 물건 가격 : " + sum + ", 잔액 : " + money + " , 보너스 포인트 : " + bonusPoint);
System.out.println("");
}
}
class PolyArgumentTest2 {
public static void main(String args[]) {
// 바이어 생성
Buyer b = new Buyer();
// 제품 생성 부분
Tv tv = new Tv();
Computer com = new Computer();
Audio audio = new Audio();
iPad ipad = new iPad();
// 물건 구매 진행
b.buy(tv);
b.buy(com);
b.buy(audio);
// 내역 확인 및 잔액 포인트 누계
b.summary();
// 판매부분
b.sell(tv);
b.sell(ipad);
// 내역 확인 및 잔액 포인트 누계
b.summary();
}
}