JAVA/실습

도서관리메뉴 실습 (1)

규율 위에 자유 2023. 6. 23. 09:59
해당 카테고리에서는 실습한 자료들을 복습하면서
상세하게 기록하도록 하겠다.
 
간단한 구성도 설명
Book / Magazine (Book 상속)  클래스
BookManager(인터페이스) / BookController(인터페이스 상속)
libraryRun(실행클래스)

초기세팅
 
1.Book / Magazine
Book 을상속받은 Magazine 클래스에서 전체 매개변수 생성자 생성시
상속한 클래스의 매개변수 직접 세팅 +  메서드 super. toString  추가

생성자
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이 붙은 메서드로 생성되어
어디서든  사용가능한 메서드 상태이다.
 
 
[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); 를 사용해서 저장할 수 있다.