각진 세상에 둥근 춤을 추자

[Java] 다형성 - VIP 고객 클래스 본문

Java

[Java] 다형성 - VIP 고객 클래스

circle.j 2022. 9. 20. 11:14

Customer 클래스를 생성한다.

package ch08_4;

public class Customer {

	// 멤버 변수
	protected int customerID;	// 고객 아이디
	protected String customerName;	// 고객 이름
	protected String customerGrade;	// 고객 등급
	int bonusPoint;	// 보너스 포인트
	double bonusRatio;	// 적립 비율
	
	
	
	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 Customer() {
		initCustomer();
	}
	
	public Customer(int customerID, String customerName) {
		this.customerID = customerID;
		this.customerName = customerName;
		initCustomer();
	}
	private void initCustomer() {
		customerGrade = "SILVER";	// 기본 등급
		bonusRatio = 0.01;	// 보너스 포인트 기본 적립 비율
	}
	
	// 보너스 포인트 적립, 지불 가격 계산 메서드
	public int calcPrice(int price) {
		bonusPoint += price * bonusRatio;	// 보너스 포인트 계산
		return price;
	}
	
	// 고객 정보를 반환하는 메서드
	public String show() {
		return customerName + " 님의 등급은 " + customerGrade + "이며, 보너스 포인트는 " + bonusPoint + "입니다.";
	}
	
}

 

이번에는 VIP 고객 클래스 코드를 생성한다.

package ch08_4;

public class VIPCustomer extends Customer {

	// 추가 속성
	private int agentID;	// VIP 고객 상담원 아이디
	double saleRatio;	// 할인율
	
	public VIPCustomer(int customerID, String customerName, int agentID) {
		super(customerID, customerName);
		customerGrade = "VIP";
		bonusRatio = 0.05;
		saleRatio = 0.1;
	
	}
	
	public int calcPrice(int price) {
		bonusPoint += price * bonusRatio;
		return price - (int)(price * saleRatio);
	}
	
	public int getAgentID() {
		return agentID;
	}

}

 

생성한 프로그램을 테스트할 프로그램을 작성한다.

package ch08_4;

public class CustomerTest {
	public static void main(String[] args) {
		
		Customer cus1 = new Customer();
		cus1.setCustomerID(10010);
		cus1.setCustomerName("이순신");
		cus1.bonusPoint=1000;
		System.out.println(cus1.show());
	
		Customer cus2 = new VIPCustomer(10020, "김유신", 12345);
		cus2.bonusPoint = 1000;
		System.out.println(cus2.show());
		
		System.out.println("-------할인율과 보너스 포인트 계산-------");
		
		int price = 10000;
		int cus1Price = cus1.calcPrice(price);
		int cus2Price = cus2.calcPrice(price);
		
		System.out.println(cus1.getCustomerName()+" 님이 "+cus1Price+"원 지불하셨습니다.");
		System.out.println(cus1.show());
		
		System.out.println(cus2.getCustomerName()+" 님이 "+cus2Price+"원 지불하셨습니다.");
		System.out.println(cus2.show());
	}
}

 

'Java' 카테고리의 다른 글

[Java] 다운캐스팅과 instanceof  (0) 2022.09.20
[Java] 다형성 활용하기  (0) 2022.09.20
[Java] 다형성  (0) 2022.09.19
[Java] 메소드 오버라이딩  (0) 2022.09.19
[Java] 상속 - 고객 관리 프로그램  (0) 2022.09.19