私はJavaとoopの設計について読んでいます。演習の 1 つは、天体とその基本的な属性を保持するシステムを設計することでした。
システムは星、銀河、惑星を保持する必要があります。
各オブジェクトには、星などのタイプがあります。ドワーフ、ジャイアント、ノーマル
スタートにも色があります。
これまでのところ、AstronomicalObject と呼ばれるこれらすべてのオブジェクトの抽象基本クラスから始めました。
public abstract class AstronomicalObject {
//Is this totally pointless?
}
次に、このクラスを拡張する 3 つのクラス Star、Galaxy、Planet を作成しました。これらのオブジェクトのタイプごとに、追加のサブクラス、つまり Star を拡張する DwarfStar を作成しました。これは受け入れられる考えですか?追加のクラスは少し冗長に感じます:
public class DwarfStar extends Star{
public final String SIZE = "DWARF";
public DwarfStar(String colour) {
super(colour);
}
}
色の属性については、次のようにしました。
public class Star extends AstronomicalObject{
public final static String YELLOW = "YELLOW";
public final static String RED = "RED";
public final static String WHITE = "WHITE";
public final static String SIZE = "NORMAL";
private String colour;
public Star(String colour) {
this.colour = colour;
}
public String getColour(){
return this.colour;
}
}
したがって、星のオブジェクトを作成するには、次を使用します。
DwarfStar ds = new DwarfStar(Star.YELLOW);
残念ながら、この本には回答ページがなく、この演習についても説明されていないため、私の解決策が有効な oop 設計であるかどうか疑問に思っていました。または、それを改善できる場合は?