1. JAVA/1.2 실습
JAVA_08_실습_객체(3)
마느링
2022. 3. 24. 19:45
문제 ] 전자제품을 구매하려고 한다. (전자제품에는 Audio, Tv, Computer가 있다.)
주어진 예산은 10000원이다.
가격, 보너스포인트(가격의 1/10), 잔액, 구매품목을 누적시켜 출력하시오.
(금액은 임의로 넣어주고 만약 주어진 예산에서 부족시, 잔액부족으로 출력)
1) Product 클래스 작성(Audio, Tv, Computer 의 부모클래스)
public class Product {
String name;
int price,bp;
//생성자
public Product(String name,int price) {
this.name = name;
this.price = price;
this.bp = price/10;
}
}
class Audio extends Product {
Audio(){
//문자열, 정수를 매개변수로 받는 부모 생성자를 호출하였다.
super("오디오",1000);
}
public String toString() {
return "오디오";
}
}
class Tv extends Product {
Tv(){
//문자열, 정수를 매개변수로 받는 부모 생성자를 호출하였다.
super("Tv",1500);
}
public String toString() {
return "Tv";
}
}
class Computer extends Product{
Computer(){
//문자열, 정수를 매개변수로 받는 부모 생성자를 호출하였다.
super("컴퓨터",3000);
}
public String toString() {
return "컴퓨터";
}
}
2) 구매하는 사람별 구매 품목을 나타내는 Buyer 클래스 작성
public class Buyer {
int price, bp,total;
String name;
Product[] cart = new Product[10];
Product p;
//매개변수를 이름으로 받는 생성자 생성
public Buyer(String name) {
this.name = name;
this.price = 10000;
//각 객체마다 주어진 예산은 만원
}
int i = 0;
public void buy(Product p) {
if(price<p.price) {
System.out.println("잔액 부족!");
return;
}
else
{ price-=p.price;
cart[i++] = p;
bp += p.bp;
System.out.println(name+"님");
System.out.println(p+"구입!");
System.out.println("잔액 : "+price);
System.out.println("적립된 포인트 : "+bp);
}
System.out.println();
}
String str = "";
public void summary() {
for(int i = 0; i<cart.length;i++) {
if(cart[i]==null) {
break;
}
total += cart[i].price;
str+=cart[i] +" ";
}
System.out.println("*****"+name+"님의 구매내역*****");
System.out.println("총 구입 금액 : "+total);
System.out.println("총 구입 품목 : "+str);
}
}
3) 메인메소드
public static void main(String[] args) {
Product tv = new Tv();
Product com = new Computer();
Product aud = new Audio();
Buyer b1 = new Buyer("홍길동1");
b1.buy(aud);
b1.buy(com);
b1.buy(aud);
b1.buy(aud);
b1.buy(aud);
b1.buy(aud);
b1.buy(aud);
b1.buy(aud);
b1.buy(aud);
b1.buy(tv);
b1.summary();
System.out.println("=============================");
Buyer b2 = new Buyer("홍길동2");
b2.buy(aud);
b2.buy(aud);
b2.buy(aud);
b2.buy(aud);
b2.buy(aud);
b2.summary();
}
}
<출력내용>
홍길동1님
오디오구입!
잔액 : 9000
적립된 포인트 : 100
홍길동1님
컴퓨터구입!
잔액 : 6000
적립된 포인트 : 400
홍길동1님
오디오구입!
잔액 : 5000
적립된 포인트 : 500
홍길동1님
오디오구입!
잔액 : 4000
적립된 포인트 : 600
홍길동1님
오디오구입!
잔액 : 3000
적립된 포인트 : 700
홍길동1님
오디오구입!
잔액 : 2000
적립된 포인트 : 800
홍길동1님
오디오구입!
잔액 : 1000
적립된 포인트 : 900
홍길동1님
오디오구입!
잔액 : 0
적립된 포인트 : 1000
잔액 부족!
잔액 부족!
*****홍길동1님의 구매내역*****
총 구입 금액 : 10000
총 구입 품목 : 오디오 컴퓨터 오디오 오디오 오디오 오디오 오디오 오디오
=============================
홍길동2님
오디오구입!
잔액 : 9000
적립된 포인트 : 100
홍길동2님
오디오구입!
잔액 : 8000
적립된 포인트 : 200
홍길동2님
오디오구입!
잔액 : 7000
적립된 포인트 : 300
홍길동2님
오디오구입!
잔액 : 6000
적립된 포인트 : 400
홍길동2님
오디오구입!
잔액 : 5000
적립된 포인트 : 500
*****홍길동2님의 구매내역*****
총 구입 금액 : 5000
총 구입 품목 : 오디오 오디오 오디오 오디오 오디오