728x90
다형성을 활용한 멤버십 프로그램 확장
- 일반 고객과 VIP 고객 중간 멤버십 만들기
고객이 늘어 일반 고객보다는 많이 구매하고 VIP고객 보다는 적게 구매하는 고객에게도 혜택을 주기로 한다..
GOLD 고객 등급을 만들고 혜택은 다음과 같다.
- 제품을 살 때는 10프로를 할인해준다.
- 보너스 포인트는 2%를 적립해준다.
- GoldCustomer.java
package ch06;
public class GoldCustomer extends Customer {
double salesRatio;
public GoldCustomer(int customerID, String customerName) {
super(customerID, customerName);
customerGrade = "Gold";
bonusRatio = 0.02;
salesRatio = 0.1;
}
public int calcPrice(int price) {
bonusPoint += price * bonusRatio;
return price - (int)(price * salesRatio);
}
}
- CustomerTest.java
package ch06;
import java.util.ArrayList;
public class CustomerTest {
public static void main(String[] args) {
ArrayList<Customer> customerList = new ArrayList<>();
/*
* 일반 고객 2명, Gold 고객 2명, VIP 고객 1명
* 서로 다른 하위 클래스가 있지만 하나의 상위 클래스(Customer)로 핸들링 한다.
*/
Customer c1 = new Customer(10010, "Son");
Customer c2 = new Customer(10020, "Kane");
Customer c3 = new GoldCustomer(10030, "Moura");
Customer c4 = new GoldCustomer(10040, "Skipp");
Customer c5 = new VIPCustomer(10050, "Dier");
customerList.add(c1);
customerList.add(c2);
customerList.add(c3);
customerList.add(c4);
customerList.add(c5);
/*
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.getCustomerGrade() + "등급의 " + customer.getCustomerName() + "님의 현재 보너스 포인트는 " + customer.bonusPoint + " 입니다.");
System.out.println();
}
}
}
출력 결과
Son님이 10000원 지불하셨습니다.
SILVER등급의 Son님의 현재 보너스 포인트는 100 입니다.
Kane님이 10000원 지불하셨습니다.
SILVER등급의 Kane님의 현재 보너스 포인트는 100 입니다.
Moura님이 9000원 지불하셨습니다.
Gold등급의 Moura님의 현재 보너스 포인트는 200 입니다.
Skipp님이 9000원 지불하셨습니다.
Gold등급의 Skipp님의 현재 보너스 포인트는 200 입니다.
Dier님이 9000원 지불하셨습니다.
VIP등급의 Dier님의 현재 보너스 포인트는 500 입니다.
* 테스트 소스 파일 첨부
728x90
'개발공부 > Java' 카테고리의 다른 글
[JVM] Metaspace 옵션(MinMetaspaceFreeRatio/MaxMetaspaceFreeRatio) 관련 정리 내용 (0) | 2022.09.14 |
---|---|
[Java] 17. 다형성의 의미와 다형성을 사용하는 이유 (0) | 2022.01.26 |
[Java] 16. 메서드 재정의(Overriding)와 가상 메서드 원리 (0) | 2022.01.24 |
[Java] 15. 상속에서 클래스 생성과 형 변환 (0) | 2022.01.24 |
[JVM GC] GC 종류와 동작 방식과 G1GC 튜닝 포인트 (0) | 2022.01.05 |