회사에서 고객 정보를 활용한 맞춤 서비스를 하기 위해
일반고객(Customer)과 이보다 충성도가 높은 우수고객(VIP Customer)에
따른 서비스를 제공하고자 함
물품을 구매 할 때 적용되는 할인율과 적립되는 보너스 포인트의
비율이 다른 여러 멤버십에 대한 각각 다양한 서비스를 제공할 수 있음
멤버십에 대한 구현을 클래스 상속을 활용하여 구현
public class Customer {
protected int customerID;
protected String customerName;
protected String customerGrade;
int bonusPoint;
double bonusRatio;
public Customer() {
customerGrade = "SILVER";
bonusRatio = 0.01;
}
public int calcPrice(int price) {
bonusPoint += price * bonusRatio;
return price;
}
public int getCustomerID() {
return customerID;
}
public void setCustomerID(int customerID) {
this.customerID = customerID;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public String getCustomerGrade() {
return customerGrade;
}
public void setCustomerGrade(String customerGrade) {
this.customerGrade = customerGrade;
}
public String showCustomerInfo() {
return customerName + "님의 등급은 " + customerGrade + "이며, 보너스 포인트는 " + bonusPoint + "입니다.";
}
}
public class VIPCustomer extends Customer {
double salesRatio;
private String agentID;
public VIPCustomer() {
bonusRatio = 0.05;
salesRatio = 0.1;
customerGrade = "VIP";
}
public String getAgentID() {
return agentID;
}
}
public class CustomerTest {
public static void main(String[] args) {
Customer customerLee = new Customer();
customerLee.setCustomerName("이순신");
customerLee.setCustomerID(10010);
customerLee.bonusPoint = 1000;
System.out.println(customerLee.showCustomerInfo());
VIPCustomer customerKim = new VIPCustomer();
customerKim.setCustomerName("김유신");
customerKim.setCustomerID(10020);
customerKim.bonusPoint = 10000;
System.out.println(customerKim.showCustomerInfo());
}
}
이순신님의 등급은 SILVER이며, 보너스 포인트는 1000입니다.
김유신님의 등급은 VIP이며, 보너스 포인트는 10000입니다.