ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA_08_실습_객체(3)
    1. JAVA/1.2 실습 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
    총 구입 품목 : 오디오 오디오 오디오 오디오 오디오

    '1. JAVA > 1.2 실습' 카테고리의 다른 글

    JAVA_08_실습_객체(5)  (0) 2022.03.26
    JAVA_08_실습_객체(4)  (0) 2022.03.25
    JAVA_10_실습_추상  (0) 2022.03.20
    JAVA_09_실습_상속  (0) 2022.03.20
    JAVA_08_실습_객체(2)  (0) 2022.03.20
Designed by Tistory.