継承で構成されるクラスを構造化しようとしています。私が作成したクラス
主要
リスト項目
図書館
アイテム
人
本
音楽CD
映画
雑誌……etc
これがライブラリクラスです
import java.util.ArrayList;
public class Library {
/**
* itemList contains the List of all items in the library.
*/
private ArrayList itemList;
/**
* count of all the items in the library.
*/
private int count;
public Library(){
}
/**
* Add a new item to the list of items.
* @param newItem The new item to be added to the list.
* @throws unisa.library.DuplicateItemException
*/
public void addItem(Item newItem) throws DuplicateItemException {
itemList.add(newItem);
}
}
アイテムクラス、
public class Item extends Person{
private String id;
private String name;
private boolean loaned;
//borrower?
private double cost;
public Item(String id, String name, boolean loaned, String borrower, double cost) {
// TODO Auto-generated constructor stub
super(borrower);
this.id = id;
this.name=name;
this.loaned = loaned;
this.cost = cost;
}
public String getID(String id){
return id;
}
public String getName(String name){
return name;
}
public boolean getLoaned(boolean loaned){
return loaned;
}
public double getCost(double cost){
return cost;
}
}
人物クラス、
public class Person {
private String name;
private String address;
public Person(String name, String address){
this.name = name;
this.address = address;
}
public Person(String name){
this.name = name;
}
}
本、映画、MusicCD はすべて同一です
public class Book extends Item{
private String author;
public Book(String author, String id, String name, boolean loaned, String borrower, double cost){
super(id, name, loaned, borrower, cost);
this.author = author;
}
}
これらのクラスを使用する必要がありますが、正しい継承を適用したかどうかわかりません。
問題は、ライブラリオブジェクトを開始しているメインクラスにあります
テストを行う
Library l1 = new Library();
および呼び出し方法
l1.addItem(new Magazine(Magazine.frequency.day, "ID001","Vanity Not So Faire", false,"New York", null, 5.95));
ここでは、Magazine クラス (book クラスと同じ) のオブジェクトを渡しています。関数宣言では、Item をコンテナーとして使用しています。addItem によって、アイテム (本、雑誌、DVD など) を追加する必要があります。関数宣言でどのコンテナを渡す必要があるか (addItem(?)) またはクラスの構造化に何か問題がありますか?