[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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바