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 |
댓글