본문 바로가기
Java

[JAVA] 자바 - 다형성을 활용한 멤버쉽 프로그램 확장

by Seong-Jun 2021. 11. 30.
728x90
반응형
SMALL
  • 일반 고객과 VIP 고객 중간 멤버쉽 만들기
고객이 늘어 일반 고객보다는 많이 구매하고 VIP보다는 적게 구매하는 고객에게도 혜택을 주는 경우

GOLD 고객 등급을 만들고 혜택은 다음과 같습니다.
1. 제품을 살때는 10%를 할인해줍니다.
2. 보너스 포인트는 2%를 적립해줍니다.

 

GoldCustomer.java

public class GoldCustomer extends Customer {

   double salesRatio;
   
   public GoldCustomer(int customerID, String customerName) {
      super(customerID, customerName);
      
      salesRatio = 0.1;
      bonusRatio = 0.02;
      customerGrade = "Gold";
   }

   @Override
   public int calcPrice(int price) {
      bonusPoint += price * bonusRatio;
      return price - (int)(price * salesRatio);
   }
}

 

CustomerTest.java(수정)

ArrayList<Customer> customerList = new ArrayList<>();
Customer customerL = new Customer(10010, "Lim");
Customer customerT = new Customer(10020, "Tom");
Customer customerW = new GoldCustomer(10030, "Woo");
Customer customerK = new GoldCustomer(10040, "Kim");
Customer customerJ = new VIPCustomer(10050, "Jam");

customerList.add(customerJ);
customerList.add(customerK);
customerList.add(customerW);
customerList.add(customerT);
customerList.add(customerL);

for(Customer customer : customerList) {
	 System.out.println(customer.showCustomerInfo());
}

int price = 10000;

for(Customer customer : customerList) {
	 int cost = customer.calcPrice(price);
	 System.out.println(customer.getCustomerName() + "님이 " + cost + "원 지불하셨습니다.");
	 System.out.println(customer.getCustomerName() + "님의 현재 보너스 포인트는 " + customer.bonusPoint + "입니다.");
}

 

출력 결과

Jam님의 등급은 VIP이며, 보너스 포인트는 0입니다.
Kim님의 등급은 Gold이며, 보너스 포인트는 0입니다.
Woo님의 등급은 Gold이며, 보너스 포인트는 0입니다.
Tom님의 등급은 SILVER이며, 보너스 포인트는 0입니다.
Lim님의 등급은 SILVER이며, 보너스 포인트는 0입니다.
Jam님이 9000원 지불하셨습니다.
Jam님의 현재 보너스 포인트는 500입니다.
Kim님이 9000원 지불하셨습니다.
Kim님의 현재 보너스 포인트는 200입니다.
Woo님이 9000원 지불하셨습니다.
Woo님의 현재 보너스 포인트는 200입니다.
Tom님이 10000원 지불하셨습니다.
Tom님의 현재 보너스 포인트는 100입니다.
Lim님이 10000원 지불하셨습니다.
Lim님의 현재 보너스 포인트는 100입니다.

 

 

728x90
반응형
LIST

댓글