• JAVA_고객 정보 맞춤 서비스 프로그램 (JAVA 상속, super())

    2021. 8. 3.

    by. KAEY



    고객 정보를 가지고 맞춤서비스를 제공하기 위해 고객 관리 프로그램을 구현해보고자 합니다.
    고객이 점점 늘어나면서 단골 고객이 생겼습니다.
    단골 고객을 우수고객으로 분류하여 별도 혜택을 제공하고자 합니다.

    우수 고객 등급은 VIP 이고, 아래와 같은 혜택을 제공합니다.

    1. 고객 혜택
    - 기본 등급은 SILVER 입니다.
    - 제품 구매 시 구매금액의 1%를 포인트로 적립합니다.

    2. 우수고객 추가 혜택
    - 구매 시 항상 10% 할인 제공
    - 제품 구매 시 구매금액의 5%를 포인트로 적립합니다.


     일반 고객 설정

     변수 선언

    private int customerID; //고객아이디
    private String customerName; //고객이름
    private String customerGrade; //고객등급
    int bonusPoint; //보너스포인트
    double bonusRatio; // 적립 비율

    생성자 생성

    public Customer() {
      customerGrade = "SILVER"; //기본 등급
      bonusRatio = 0.01; //포인트 기본적립비율
    }

    가격 계산 메소드

    public int calcPrice(int price) {
      bonusPoint += price * bonusRatio; //포인트 계산
      return price;
    }
    
    public String showCustomerInfo() {
      return customerName + " 님의 등급은 " + customerGrade + "이
      며, 보너스 포인트는 " + bonusPoint + "입니다."; 
    }

    VIP 손님 설정

    public class VIPCustomer {
      private int customerID; //고객아이디
      private String customerName; //고객이름
      private String customerGrade; //고객등급
      int bonusPoint; //보너스포인트
      double bonusRatio; // 적립 비율
      double saleRatio; //할인율
      
      public VIPCustomer() {
        customerGrade = “VIP"; //고객 등급 VIP
        bonusRatio = 0.05; //VIP 포인트 적립비율
        saleRatio = 0.1; //할인율 10%
      }
      
      public int calcPrice(int price) {
        bonusPoint += price * bonusRatio; //포인트 계산
        return price – (int)(price * saleRatio); //할인율 적용
      }
      
      public String showCustomerInfo() {
        return customerName + " 님의 등급은 " + customerGrade + "이며, 보너스 포인트는 " + bonusPoint + "입니다."; 
      }
    }

      단 이렇게 한다면, 일반 고객의 java 클래스와 큰 차이가 없다. 따라서 이런 경우 상속을 사용한다.

     


    VIP 고객 클래스 상속버전

    public class VIPCustomer extends Customer {
      double saleRatio; //할인율
      
      public VIPCustomer() {
        customerGrade = “VIP"; //고객 등급 VIP
        bonusRatio = 0.05; //VIP 포인트 적립비율
        saleRatio = 0.1; //할인율 10%
      }
      
      public int calcPrice(int price) {
        bonusPoint += price * bonusRatio; //포인트 계산
        return price – (int)(price * saleRatio); //할인율 적용
      }
      
      public String showCustomerInfo() {
        return customerName + " 님의 등급은 " + customerGrade + "이며, 보너스 포인트는 " + bonusPoint + "입니
        다."; 
      }
    }

      단, 여기서 앞서 일반 고객에서 private로 선언한 변수들을 상속받은 하위 클래스에서도 변수를 사용할 수 있게 해주는 protected로 변수를 사용해주어야 한다.

     

    protected int customerID; //고객아이디
    protected String customerName; //고객이름
    protected String customerGrade; //고객등급
    int bonusPoint; //보너스포인트
    double bonusRatio; // 적립 비율

     이렇게 하면 상속받은 하위 클래스에서도 변수를 사용할 수 있고 외부 클래스에서는 참조가 불가능하다.


     

    댓글 (비로그인 댓글 허용하지 않습니다.)