Languages/Java

[자바 객체 지향 프로그래밍] 02. 객체 설계하기

Dev다D 2021. 1. 28. 22:06
반응형

특가 할인 매장

가게에서 판매할 상품을 위한 클래스를 만들어봅시다!

MarketGood 클래스 

인스턴스 변수

MarketGood 클래스는 아래와 같은 인스턴스 변수들을 포함합니다:

(1) String name (상품의 이름)

(2) int retailPrice (상품의 출시 가격)

(3) int discountRate (상품의 할인율. 단위: %)

모두 private으로 설정해주세요!

생성자

MarketGood 클래스는 두 개의 생성자를 가지고 있습니다:

(1) public MarketGood(String name, int retailPrice, int discountRate)

  • 생성자의 파라미터로 받은 값들을 인스턴스 변수에 지정해줍니다.

  • discountRate가 0%보다 작거나 100%보다 큰 경우, 0으로 지정해줍니다.

(2) public MarketGood(String name, int retailPrice)

  • 두 번째 생성자는 discountRate의 기본값으로 0을 넣어줍니다.

Getter / Setter 메소드

(1) name, retailPrice는 getter 메소드만 만들어줍니다. 값을 지정해주는 것은 생성자에서 완료되었기 때문에 setter 메소드는 따로 만들 필요가 없습니다.

(2) discountRate는 바뀔 수 있기 때문에 getter과 setter 메소드를 모두 만들어줍니다.

public int getDiscountedPrice()

할인가를 리턴하는 메소드를 만듭니다. 예를 들어서 retailPrice10000이고 discountRate20이면, 8000을 리턴하는 것이죠.

 

> MacBook Air의 할인율: 0%

> MacBook Pro의 할인율: 15%

> iPhone 7의 정상 가격: 920000원

> iPhone 7의 할인 가격: 736000원

> 경쟁 업체가 많아져서 iPhone 7의 할인율이 35%로 올랐습니다.

> iPhone 7의 할인 가격: 598000원

 


public class MarketGood {
    private String name;
    private int retailPrice;
    private int discountRate;

    public MarketGood(String pName, int pRetailPrice, int pDiscountRate) {
        name = pName;
        retailPrice = pRetailPrice;
        if (pDiscountRate < 0 || pDiscountRate > 100) {
            discountRate = 0;
        } else {
            discountRate = pDiscountRate;
        }
    }

    public MarketGood(String pName, int pRetailPrice) {
        name = pName;
        retailPrice = pRetailPrice;
        discountRate = 0;
    }

    public String getName() {
        return name;
    }

    public int getRetailPrice() {
        return retailPrice;
    }

    public void setDiscountRate(int newDiscountRate) {
        discountRate = newDiscountRate;
    }
    public int getDiscountRate() {
        return discountRate;
    }

    public int getDiscountedPrice() {
        return retailPrice - (retailPrice * discountRate)/100 ;
    }
}
public class Main {
    public static void main(String[] args) {
        MarketGood g1 = new MarketGood("MacBook Air", 1250000);
        MarketGood g2 = new MarketGood("MacBook Pro", 2990000, 15);
        MarketGood g3 = new MarketGood("iPhone 7", 920000, 20);

        System.out.println(g1.getName() + "의 할인율: " + g1.getDiscountRate() + "%");
        System.out.println(g2.getName() + "의 할인율: " + g2.getDiscountRate() + "%");
        System.out.println(g3.getName() + "의 정상 가격: " + g3.getRetailPrice() + "원");
        System.out.println(g3.getName() + "의 할인 가격: " + g3.getDiscountedPrice() + "원");
        System.out.println("경쟁 업체가 많아져서 " + g3.getName() + "의 할인율이 35%로 올랐습니다.");
        g3.setDiscountRate(35);
        System.out.println(g3.getName() + "의 할인 가격: " + g3.getDiscountedPrice() + "원");
    }
}

 


본 내용은 Codeit의  '자바 기초' 강의를
참고하여 작성한 내용입니다.

 

반응형