Java - 도서 관리 프로그램 구현해보기
도서를 관리하는 시스템
시스템은 도서를 추가 가능하고 모든 도서의 정보를 출력하는 기능을 제공하자.
- Library 클래스 제공하기
- Book 클래스는 Library 내부에 사용. 외부에서 노출하지 않도록 한다.
- Library 클래스는 Book 객체 배열을 사용
Library.class
public class Library {
// 코드 필요
}
Main.class
public class Main {
public static void main(String[] args) {
Library lib = new Library(6); // 최대 보관 가능한 도서 갯수
lib.addBook("노인과 바다", "어니스트 헤밍웨이");
lib.addBook("돈 키호테", "미겔 데 세르반테스");
lib.addBook("빨간 망토", "샤를 페로");
lib.addBook("title4", "author4");
lib.addBook("title5", "author5");
lib.addBook("title6", "author6");
lib.showBooks(); // 도서 정보 모두 출력
}
}
풀이
Library.class
public class Library {
// 코드 필요
private Book[] books;
private int max = 0;
private int count = 0;
class Book {
String title;
String author;
Book(String title, String author) {
this.title = title;
this.author = author;
}
}
public void addBook(String title, String author) {
if (count >= max) {
System.out.println("저장 공간이 부족합니다.");
return;
}
books[count++] = new Book(title,author);
}
public void showBooks() {
for (Book book : books) {
System.out.println("책 제목: " + book.title + ", 책 저자: " + book.author);
}
}
Library(int books) {
max = books;
this.books = new Book[books];
}
}
Main.class
public class Main {
public static void main(String[] args) {
Library lib = new Library(6); // 최대 보관 가능한 도서 갯수
lib.addBook("노인과 바다", "어니스트 헤밍웨이");
lib.addBook("돈 키호테", "미겔 데 세르반테스");
lib.addBook("빨간 망토", "샤를 페로");
lib.addBook("title4", "author4");
lib.addBook("title5", "author5");
lib.addBook("title6", "author6");
lib.addBook("title7", "author7");
lib.showBooks(); // 도서 정보 모두 출력
}
}
저장 공간이 부족합니다.
책 제목: 노인과 바다, 책 저자: 어니스트 헤밍웨이
책 제목: 돈 키호테, 책 저자: 미겔 데 세르반테스
책 제목: 빨간 망토, 책 저자: 샤를 페로
책 제목: title4, 책 저자: author4
책 제목: title5, 책 저자: author5
책 제목: title6, 책 저자: author6
예외 상황으로 책을 초과하였을 때 저장 공간이 부족하다고 출력하게 하였다.
내부클래스로 사용하였는데 아직 외부로 Book 클래스가 노출되고 있다.
정적 중첩 클래스("class Book"
-> "private static class Book"
)로 바로 만들어 숨겨주도록 한다.
