요청사항.
고객 클래스.
고객 ID
고객 이름
고객 등급
포인트
할인율
VIP고객 클래스.
전용 할인율
전용ID
GOLD고객 클래스.
전용 할인율
전용ID
코드 실행부.
1. 고객 클래스 설계
//멤버변수
//static
//constructor
//getter
//setter
//method
package com.inheritance;
/**
* 4.21 상속개념 7
* 클래스 다이어그램 준수해야 한다.
*/
public class Customer {
//member
private int customerID;
private String customerName;
private String customerGrade;
private int bonuspoint;
private double bonusRatio;
static int idCount = 1;
//constructor
public Customer(String customerName) {
this.customerID = idCount;
idCount++;
this.customerName = customerName;
customerGrade = "일반";
bonuspoint = 0;
bonusRatio = 0.01;
}
//getter
int getCustomerID() {
return customerID;
}
String getCustomerName() {
return customerName;
}
String getCustomerGrade() {
return customerGrade;
}
int getBonuspoint() {
return bonuspoint;
}
//setter
void setCustomerGrade(String customerGrade) {
this.customerGrade = customerGrade;
}
//method
public int calcPrice(int int1) {
return (int) (bonusRatio * int1);
} //calcPrice
public void showCustomerInfo() {
System.out.print("고객 정보...");
System.out.print(" 고객ID: " + customerID);
System.out.print(" 고객이름: " + customerName);
System.out.print(" 고객등급: " + customerGrade + "(" + bonusRatio + ")");
System.out.println(" 포인트: " + bonuspoint);
} //showCustomerInfo
}//end of class
2.VIP클래스 설계
package com.inheritance;
/**
* 4.21 상속개념 7_1
* 클래스 다이어그램 준수해야 한다.
*/
public class VIPCustomer extends Customer {
//클래스속성
private int agentID;
private double salesRatio;
//생성자
public VIPCustomer(String customerName, int agentID) {
super(customerName);
this.agentID = agentID;
salesRatio = 0.03;
setCustomerGrade("VIP");
}
//getter
public int getAgentID() {
return agentID;
}
//메서드
public int calcPrice(int int1) {
return (int) (salesRatio * int1);
}
public void showCustomerInfo() {
System.out.print("고객 정보...");
System.out.print(" 고객ID: " + super.getCustomerID());
System.out.print(" 고객이름: " + super.getCustomerName());
System.out.print(" 고객등급: " + super.getCustomerGrade() + "(" + salesRatio + ")");
System.out.println(" 포인트: " + super.getBonuspoint());
}
}//end of class
3.GOLD 클래스 설계(VIP와 비슷)
package com.inheritance;
/**
* 4.21 상속개념 7_2
* 클래스 다이어그램 준수해야 한다.
*/
public class GoldCustomer extends Customer {
//클래스속성
private int agentID;
private double salesRatio;
//생성자
public GoldCustomer(String customerName, int agentID) {
super(customerName);
this.agentID = agentID;
salesRatio = 0.05;
setCustomerGrade("GOLD");
}
//getter
public int getAgentID() {
return agentID;
}
//메서드
public int calcPrice(int int1) {
return (int) (salesRatio * int1);
}
public void showCustomerInfo() {
System.out.print("고객 정보...");
System.out.print(" 고객ID: " + super.getCustomerID());
System.out.print(" 고객이름: " + super.getCustomerName());
System.out.print(" 고객등급: " + super.getCustomerGrade() + "(" + salesRatio + ")");
System.out.println(" 포인트: " + super.getBonuspoint());
}
}//end of class
4.실행부
package com.inheritance;
/**
* 4.21 상속개념 7_3
* 클래스 다이어그램 준수해야 한다.
*/
public class CustomerMainTest {
//main
public static void main(String[] args) {
Customer customer1 = new Customer("홍길동");
VIPCustomer vipCustomer1 = new VIPCustomer("장길산", 1);
GoldCustomer goldCustomer1 = new GoldCustomer("임꺽정", 1);
customer1.showCustomerInfo();
vipCustomer1.showCustomerInfo();
goldCustomer1.showCustomerInfo();
System.out.println(customer1.getCustomerName() + "이 받을 포인트: " + customer1.calcPrice(1000));
System.out.println(vipCustomer1.getCustomerName() + "이 받을 포인트: " + vipCustomer1.calcPrice(1000));
System.out.println(goldCustomer1.getCustomerName() + "이 받을 포인트: " + goldCustomer1.calcPrice(1000));
}//end of main
}//end of class
'Java' 카테고리의 다른 글
접근제어지시자 private(-) public(+) protected(#) (0) | 2025.04.22 |
---|---|
포함관계 Composition, 상속과는 다르다. (1) | 2025.04.21 |
메서드 오버라이드 Method Override, 상속받은 메서드 덮어쓰기 (1) | 2025.04.21 |
클래스의 상속 Inheritance, 기존 클래스 속성과 기능을 이어받다 (0) | 2025.04.21 |
메서드 오버로딩 Method Overloading, 자바의 편리한 기능 (0) | 2025.04.21 |