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());
}
}
}
|