
package com.tjoeun.customer;
// 자식 클래스
// VIP 고객 정보를 기억하는 클래스
// 일반 고객이나 VIP 고객이나 기본적인 고객 정보는 동일하므로 Customer 클래스를 상속받는다.
public class VIPCustomer extends Customer {
// 일반 고객 정보에는 없고 VIP 고객 정보에만 있을 필드를 선언한다.
// 1:1 상담원이 배정되고 제품을 구매할 때 가격의 10%를 할인해주고 보너스 포인트는 5%를 적립해준다.
private int agentID; // 담당 1:1 상담원 ID
private double salesRatio; // 추가 할인 비율
public VIPCustomer() {
// 부모 클래스에서 private 권한으로 선언된 필드에 접근하면 에러가 발생한다
// customerGrade = "VIP"; //에러
// bonusRatio = 0.05; // 에러
// 상속받은 private 권한으로 선언된 필드의 setter 메소드로 VIP 고객 정보를 넣는다.
setCustomerGrade("VIP");
setBonusRatio(0.05);
salesRatio = 0.1;
}
public int getAgentID() {
return agentID;
}
public void setAgentID(int agentID) {
this.agentID = agentID;
}
public double getSalesRation() {
return salesRatio;
}
public void setSalesRation(double salesRation) {
this.salesRatio = salesRation;
}
@Override
public String toString() {
return super.toString() + ", 담당자번호=" + agentID + ", 할인율=" + salesRatio;
}
// 구매 금액을 인수로 넘겨받아 실제 구매 금액을 계산해서 리턴하는 메소드
public int calcSales(int price) {
price *= (1 - salesRatio);
return price;
}
// Customer 클래스에서 상속받은 calBonus()메소드는 할인전 금액에 대한 보너스 포인트를 계산하기
// 때문에 VIP 고객의 추가 할인율이 적용된 실제 구매 금액에 대한 보너스 포인트를 계산할 수 없다.
// 따라서 Customer 클래스에서 상속받은 calBonus()메소드를 Override(재정의) 해서 구현한다
// alt + shift + S : Override / Implement
// 구매 금액을 인수로 넘겨받아 실제 구매 금액에 따른 보너스 포인트를 계산하는 메소드
@Override
public int calcBonus(int price) {
return (int) (calcSales(price) * getBonusRatio());
}
// 심심함녀 VVIP 만들어보기
}
'java&eclipse 코딩 알고리즘 > 20231215' 카테고리의 다른 글
| UpDownCastingTest (0) | 2023.12.15 |
|---|---|
| CustomerTest (0) | 2023.12.15 |
| Customer (0) | 2023.12.15 |
| ClassIncludeTest (0) | 2023.12.15 |
| Parent (0) | 2023.12.15 |