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()
할인가를 리턴하는 메소드를 만듭니다. 예를 들어서 retailPrice가 10000이고 discountRate가 20이면, 8000을 리턴하는 것이죠.
테스트
1번째 상품의 이름 "MacBook Air", 출시 가격 1250000
2번째 상품의 이름 "MacBook Pro", 출시 가격 2990000, 할인율 15%
3번째 상품의 이름 "iPhone 7", 출시 가격 920000, 할인율 20%
이 실행결과가 나와야 합니다.
MacBook Air의 할인율: 0%
MacBook Pro의 할인율: 15%
iPhone 7의 정상 가격: 920000원
iPhone 7의 할인 가격: 736000원
경쟁 업체가 많아져서 iPhone 7의 할인율이 35%로 올랐습니다.
iPhone 7의 할인 가격: 598000원
A. 해설
MarketGood 클래스
public class MarketGood {
private String name;
private int retailPrice;
private int discountRate;
public String getName() { return name; }
public int getRetailPrice() { return retailPrice; }
public void setDiscountRate(int discountRate) { this.discountRate = discountRate; }
public int getDiscountRate() { return discountRate; }
// 1번째 생성자
public MarketGood(String name, int retailPrice, int discountRate) {
this.name = name;
this.retailPrice = retailPrice;
if (discountRate < 0 && discountRate > 100) {
this.discountRate = 0;
} else {
this.discountRate = discountRate;
}
}
// 2번째 생성자
public MarketGood(String name, int retailPrice) {
this.name = name;
this.retailPrice = retailPrice;
this.discountRate = 0;
}
// 할인된 가격 리턴해주는 메소드
public int getDiscountedPrice(int discountRate) {
// 정확한 결과 위해 double로 변환
return (int)(retailPrice * ((double)(100 - discountRate) / 100));
}
}
Main 클래스
public class Main {
public static void main(String[] args) {
MarketGood M1 = new MarketGood("MacBook Air", 1250000);
MarketGood M2 = new MarketGood("MacBook Pro", 2990000, 15);
MarketGood M3 = new MarketGood("iphone 7", 920000, 20);
System.out.println(M1.getName() + "의 할인율: " + M1.getDiscountRate() + "%");
System.out.println(M2.getName() + "의 할인율: " + M2.getDiscountRate() + "%");
System.out.println(M3.getName() + "의 정상가격: " + M3.getRetailPrice() + "원");
System.out.println(M3.getName() + "의 할인가격: "
+ M3.getDiscountedPrice(M3.getDiscountRate()) + "원");
System.out.println("경쟁 업체가 많아져서 " + M3.getName() + "의 할인율이 35%로 올랐습니다.");
M3.setDiscountRate(35);
System.out.println(M3.getName() + "의 할인가격:
" + M3.getDiscountedPrice(M3.getDiscountRate()) + "원");
}
}
출처 | 코드잇 (자바 기초)
'💠문제 풀이 > Java 문제 풀이' 카테고리의 다른 글
08. 두 원소의 차 중 최댓값 구하기 (0) | 2021.10.06 |
---|---|
07. 평균값 계산기 (0) | 2021.10.06 |
05. 은행 계좌 만들기 (5) (0) | 2021.10.05 |
04. 은행 계좌 만들기 (4) (0) | 2021.10.05 |
03. 은행 계좌 만들기 (3) (0) | 2021.10.05 |