문제
특가 할인 매장
가게에서 판매할 상품을 위한 클래스 만들기
MarketGood 클래스
< 인스턴스 변수 >
MarketGood 클래스는 아래와 같은 인스턴스 변수들을 포함
(1) String name // 상품의 이름
(2) int retailPrice // 상품의 출시 가격
(3) int discountRate // 상품의 할인율. 단위 %
+ 모두 private로 설정할 것
< 생성자 >
(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을 리턴
결과값
MacBook Air의 할인율: 0%
MacBook Pro의 할인율: 15%
iPhone 7의 정상 가격: 920000원
iPhone 7의 할인 가격: 736000원
경쟁 업체가 많아져서 iPhone 7의 할인율이 35%로 올랐습니다.
iPhone 7의 할인 가격: 598000원
풀이 및 답
MarketGood 클래스
public class MarketGood {
// 변수
private String name; // 상품의 이름
private int retailPrice; // 상품의 출시 가격
private int discountRate; // 상품의 할인율. 단위 %
// 생성자
public MarketGood(String name, int retailPrice, int discountRate){
if(discountRate < 0 || discountRate > 100) {
discountRate=0;
}else {
this.discountRate=discountRate;
}
this.name=name;
this.retailPrice=retailPrice;
}
public MarketGood(String name, int retailPrice) {
this.name=name;
this.retailPrice=retailPrice;
discountRate=0;
}
// 메서드
// getter / setter
public String getName() {
return name;
}
public int getRetailPrice() {
return retailPrice;
}
public void setDiscountRate(int discountRate) {
this.discountRate=discountRate;
}
public int getDiscountRate() {
return discountRate;
}
// 할인가를 리턴하는 메소드
public int getDiscountedPrice() {
int res=0;
res=(int)(retailPrice * ((double)(100-discountRate) / 100));
return res;
// 줄여서 작성하면?
//return (int)(retailPrice * ((double)(100-discountRate) / 100));
}
}
Main 클래스
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() + "원");
}
}