JAVA/예제

[JAVA] ch07-19. 객체 지향 19

밍글링글링 2017. 8. 22.
728x90
import java.util.ArrayList;
/*library API 일부에 collection framework
api 단순한 객체의 집합
{ArrayList - 제일 많이씀 ,Map, Set}
배열써도 되는데 arraylist 쓰는 이유
배열은 사이즈가 고정이되고 arraylist는 사이즈 자동조정
*/
public class Ex19 { //개발하는 시점에는 계속 테스트
    public static void main(String[] args){
        Shopper  shopper = new Shopper();
        Tablet tablet = new Tablet();
        PC pc = new PC();
        Audio audio = new Audio();
        
        shopper.buy(tablet);
        shopper.buy(pc);
        shopper.buy(audio);
        shopper.summary();
        System.out.println();
        
        shopper.refund(pc);
        shopper.summary();
    }
}

class Shopper{
    int money = 1000;
    int bonus = 0;
    ArrayList<Product> item = new ArrayList<Product>();//여기서 Product는 [Generic Type] 자바5버전에 추가된 문법 
 한국어로 번역하면 아무거나 타입 실행시점에 타입 결정
    
    void buy(Product product){
        money -= product.price;
        bonus += product.bonus;
        item.add(product);//ArrayList에는 add라는 메서드가 있음.
        System.out.println(product+"를 구매.");
    }
    
    void refund(Product product){
        if(item.remove(product)){
            money += product.price;
            bonus -= product.bonus;
            System.out.println(product+"를 환불");
        }else{
            System.out.println("환불할 상품이 없음.");
        }
    }
    
    void summary(){
        int sum = 0;
        String itemList = "";
        
        if(item.isEmpty()){ //디자인기법 : boolean은 2가지 상태에서 상태조사하는 값을 리턴할때는 메서드명은 is로 시작
            System.out.println("산 물건 없음.");
            return;
        }
    
    Product product = null;
    for(int i=0; i<item.size(); i++){//size는 값의 갯수
        product = item.get(i);
        sum += product.price;
        itemList += product+" ";
        }
    System.out.println(sum + "원어치 구매.");
    System.out.println(itemList +"를 구매.");
    }
}
 

728x90

'JAVA > 예제' 카테고리의 다른 글

[JAVA] ch07-21. 팩토리 패턴(Factory Pattern)  (0) 2017.08.22
[JAVA] ch07-20. 객체 지향 20  (0) 2017.08.22
[JAVA] ch07-18. 객체 지향 18  (0) 2017.08.22
[JAVA] ch07-17. 객체 지향 17  (0) 2017.08.22
[JAVA] ch07-16. 객체 지향 16  (0) 2017.08.22

댓글