解答例 - j2.lesson04.Bookshelf

package j2.lesson04;

/**
 * 課題1703 - 解答例.
 * 本棚を表すクラス.
 @author arakawa
 @version $Id: Bookshelf_java.rps,v 1.1 2006/03/06 12:56:14 java2005 Exp $
 */
public class Bookshelf {
    
    /** 最大蔵書数. */
    public static final int MAX_BOOKS = 20;
    
    /** 本を格納する配列. */
    private final Book[] books;
    
    /** 本をカウントする. */
    private int count;

    /**
     * 本棚インスタンスを生成する。
     */
    public Bookshelf() {
        super();
        this.books = new Book[MAX_BOOKS];
        this.count = 0;
    }
    
    /**
     * この本棚にある蔵書の総数を返す。
     @return この本棚にある蔵書の総数
     */
    public int totalBooks() {
        return this.count;
    }
    
    /**
     * この本棚にある蔵書の合計ページ数を返す。
     * 一冊もなければ 0 を返す。
     @return 蔵書の合計ページ数。一冊もなければ 0
     */
    public int totalPages() {
        int pages = 0;
        for (int i = 0; i < this.count; i++) {
            pages += this.books[i].getPages();
        }
        return pages;
    }
    
    /**
     * 指定された本をこの本棚に追加する。
     * ただし、本棚に追加できる本の数には限りがあり、
     * 制限を超えてしまう場合は本を追加せずに <code>false</code> を返す。
     * 本を追加できた場合は <code>true</code> を返す。
     @param book 追加する本
     @return 追加できれば <code>true</code>
     */
    public boolean put(Book book) {
        if (this.count < MAX_BOOKS) {
            this.books[this.count= book;
            this.count++;
            return true;
        }
        else {
            return false;
        }
    }

    /**
     * 蔵書リストを表示する。
     * 表示する順番は、格納された順番と同じで、各本を改行で区切る。
     * 各本の表示形式は、{@link Book#toString()} と同様。
     */
    public void showList() {
        for (int i = 0; i < this.count; i++) {
            System.out.println(this.books[i].toString());
        }
    }
}