JAVA/실습
도서관리메뉴 실습 (1)
규율 위에 자유
2023. 6. 23. 09:59
해당 카테고리에서는 실습한 자료들을 복습하면서
상세하게 기록하도록 하겠다.
간단한 구성도 설명
Book / Magazine (Book 상속) 클래스
BookManager(인터페이스) / BookController(인터페이스 상속)
libraryRun(실행클래스)
초기세팅
1.Book / Magazine
Book 을상속받은 Magazine 클래스에서 전체 매개변수 생성자 생성시
상속한 클래스의 매개변수 직접 세팅 + 메서드 super. toString 추가
2. BookManager(인터페이스) / BookController
implements 및 메서드 오버라이딩
조건
조건1.librarRrun클래스에 데이터 생성

조건2.controller에서 오버라이딩 해논 메서드 정의 후 run에서 실행
[1]main 메서드 설명

1.데이터를 담을 bList 이름을 가진 변수 선언
Book 타입 - ArrayList형
2.데이터 추가
2-1 ArrayList의 데이터를 추가하는 방법 add 메서드 사용
2-2 Book 객체 생성과 동시에 값 대입 이후 bList 객체 배열에 데이터 추가
bList.add(new Book(*Book 클래스 생성자 형식대로 전체 매개변수 입력)
}
★★★
3. printBooks(bList); 사용 가능한 이유
다음 기능구현을 하면서 선언될 printBooks(); 메서드가
static이 붙은 메서드로 생성되어
어디서든 사용가능한 메서드 상태이다.
static이 붙은 메서드로 생성되어
어디서든 사용가능한 메서드 상태이다.
[2]public static void printBooks(ArrayList<Book> bs) 메서드 설명
문제1.프로그램 실행시 입력한 데이터들 전체 출력 되어야 하는 상황
문제2. Run클래스 보조 클래스 역할로 Controller에서 각 메뉴별 기능 구현 (실행은 Run 클래스에서 )
1.bList에 담긴 데이터 출력
메서드 내 ArrayList<Book> bs 라는 변수가 bList 변수에 담긴 ArrayList<Book> 객체들을 참조할 수 있게 한다.
따라서 bs변수를 가지고 for문을 돌려 bList에 담긴 데이터를 출력할 수 있다.
2. controller

구현 이후 발생할 문제
앞으로 controller에서 메서드를 재정의하면서 Run으로 넘겨줄 데이터를 저장할 공간이 필요하기 떄문에
controller 에서 ArrayList<Book> 객체를 생성해서
run에서 입력받은 데이터를 controller로 넘겨 Book 객체들을 관리해야한다.
추가로 전역에서 사용할 수 있도록 전역변수 부분에 선언해야한다.
ArrayList<Book> list = new ArrayList<>(); - 선언
이후 객체들을 관리하기위해 libraryRun 클래스에서 for문을 돌려
나오는 각각의 bs.get(i) = Book 객체들을 addBook 메서드를 통해
controller 의 addBook 메서드 의 매개변수인 nBook으로 전달 하고
다시 전역변수로 선언된 Book에 list.add(nBook); 를 사용해서 저장할 수 있다.