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")로 바로 만들어 숨겨주도록 한다.