===================== 도서 목록 추가 도서 목록 검색 종료 ===================== 메뉴를 선택하세요(1~3) 1 도서명을 입력하세요 쉬운자바 저자를 입력하세요 정현희 수량을 입력하세요 10 ===================== 1. 도서 목록 추가 2. 도서 목록 검색 3. 종료 ===================== 메뉴를 선택하세요(1~3) 2 도서명을 입력하세요 쉬운자바 도서명:쉬운자바 저자 : 정현희 수량 : 10 |
- 전체 프로젝트 진행 과정
1단계 책을 가지는 속성을 클래스로 정의한다.
2단계 1단계에서 정의한 책 객체의 리스트를 관리하기 위한 객체를 정의한다.
3단계 책 객체 리스트에 접근하고 책 객체를 얻어오기 위한 Iterator 객체를 정의한다
4단계 1,2,3단계에서 정의한 클래스를 사용하여 도서 목록 추가 기능과 도서 목록 검색기능을 구현한다.
1단계 책을 가지는 속성을 클래스로 정의한다.
1) 분석하기
책이 가지는 속성을 BookRecord클래스로 정의
속성 : 제목, 저자, 보유수량
동작 : 책속성값 설정, 책제목출력, 책저자출력, 책수량출력
2) 설계하기
클래스다이어그램
public BookRecord(String title, String author, int quantity) //책 객체 생성시 속성을 설정하는 생성자 public String getTitle() //책의 제목을 얻어오기 위한 메소드 |
3) 구현하기
2단계 1단계에서 정의한 책 객체의 리스트를 관리하기 위한 객체를 정의한다
1) 분석단계
BookRecord 클래스 객체의 집합에 새로운 객체를 추가, 객체를 얻어오고 배열에 접근하기 위한 열거자를 얻어온다.
속성: 책객체의 집합, 책객체의 개수
동작: 책객체의 집합 초기화, 책객체 얻어오기, 책객체 추가하기, 책 객채 집합 크기 얻어오기
책객체 집합의 열거자 얻어오기
메서드 | 기능 |
public Iterator iterator() | 책 객체 생성시 속성을 설정하는 식별자 |
public BookRecordSet() | 크기가 50인 배역 객체를 생성하기 위한 생성자 |
public BookRecordSet(int index) | 저자의 이름을 얻어 오기 위한 get메서드들 |
public void appendBookRecord (BookRecord book) | BookRecord객체 배열에 BookRecord객체를 추가하는 메서드 |
public int size() | BookRecord 객체 배열에 저장된 객체의 숫자를 알아오는 메서드 |
public Iterator iterator() | 배열 객체를 순회하여 조회하기 위해 필요한 열거자를 얻어오기 위한 메서드 |
3) 구현하기
3단계 책 객체 리스트에 접근하고 책 객체를 얻어오기 위한 Iterator 객체를 정의한다.
1) 분석
2단계에서 오버라이딩하여 구현한 iterator() 메서드가 반환하게될 BookRecordSetIterator객체를 정의해 보자. Iterator는 객체의 집합에 대해 순차적으로 접근할 수 있는 방법을 제공하는 열거자이고 다음 객체가 존재하는지를 조사하는 동작과 함께 현재 열거자가 가리키고 있는 객체를 얻어오는 메서드를 제공해야 한다.
속성: 책 집합 객체 인덱스
동작: 다음 객체가 존재 여부 반환, 인덱스가 가르키는 객체를 반환하고 인덱스를 1만큼 증가
2) 설계
메서드 | 기능 |
public boolean hasNext() | 다음 객체가 있는지를 조사하는 메서드 |
public Object next() | 열거자가 가리키는 객체를 리턴하고 열겨자를 다음으로 이동한다. |
public BookRecordSetIterator (BookRecordSet brs) | BookRecordSet객체를 인자로 받아 멤버변수에 저장하는 생성자 |
public boolean hasNext() | 다음 객체가 있는지를 조사하는 메서드 |
public Object next() | 열거자가 가리키는 객체를 리턴하고 열겨자를 다음으로 이동한다. |
3) 구현하기
4단계 1,2,3단계에서 정의한 클래스를 사용하여 도서 목록 추가 기능과 도서 목록 검색기능을 구현한다.
1) 분석하기
① 사용자에게 메뉴를 입력받는다.
② 도서 목록 추가메뉴가 선택되었다면 도서명, 저자 수량을 입력받는다.
③ 입력받은 도서명, 저자, 수량을 인자로 하여 BookRecord 클래스의 생성자를 호출해 객체를 만든다.
④ BookRecord클래스 객체를 BookRecordSet 클래스 객체의 appendBookRecord()메서드를 이용해 저장한다.
⑤ 도서 목록 검색이 선택되었다면 도서명을 입력 받는다.
⑥ BookRecordSet 클래스의 iterator()메소드를 Iterator객체를 구한다.
⑦ Iterator객체의 hasNext()메서드를 호출하여 BookRecord클래스 객체가 있는지 확인한다.⑧ 호출할 BookRecord 클래스 객체가 있다면 Iterator객체의 Next()메서드를 호출하여 BookRecord객체를 구현한다.
⑨ 더 이상 호출할 BookRecord객체가 없다면 검색된 결과를 출력한다.
종료가 선택되었다면 프로그램을 종료한다.
2) 설계하기
알고리즘
while bFlag 메뉴출력 메뉴선택(iMenu) switch iMenu case 1이면 새 도서 객체를 추가 case 2이면 열거자를 얻어온다. 도서명을 입력 while 다음 객체가 있는가? if 현재 열거자가 가르키는 객체의 도서명과 입력된 도서명이 같은가? 도서명 정보 출력 case 3이면 bFlag를 FALSE로 설정한다. |
3) 구현하기