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

2017. 8. 22. 11:45·JAVA/예제
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
'JAVA/예제' 카테고리의 다른 글
  • [JAVA] ch07-21. 팩토리 패턴(Factory Pattern)
  • [JAVA] ch07-20. 객체 지향 20
  • [JAVA] ch07-18. 객체 지향 18
  • [JAVA] ch07-17. 객체 지향 17
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (407) N
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (10) N
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    rust linux
    자바 for문
    ssl 인증서 발급
    nginx
    VS Code 팁
    에디터 팁
    티스토리 자동화
    css table
    css tb
    vue cli
    SSL 인증서
    java casting
    자바 클래스
    오류
    vscode
    API 설계
    리눅스 설치
    jsp include
    자바 배열
    Node
    proxy pass
    css block
    css float
    프런트엔드
    자바 생성자
    Java Array
    ubuntu
    vue 설치
    자바 객체 지향
    css perspective
    러스트
    nginx ssl 적용
    자바 exception
    React Compiler
    lang rust
    svelte
    spring java
    css list
    클론코딩
    AI 코딩 에이전트
    Rust lang
    Extension Bisect
    브라우저 자동화
    gitlab 설치
    nginx ssl 설정
    docker
    mysql db
    jsp parameter
    servlet class
    css transition
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[JAVA] ch07-19. 객체 지향 19
상단으로

티스토리툴바