Ich habe auf Java und Oop Design gelesen. Eine der Übungen bestand darin, ein System zu entwerfen, das astronomische Objekte und einige grundlegende Eigenschaften von ihnen enthält.Java oop Design Verifikation
Das System muss Sterne, Galaxien und Planeten enthalten.
Jedes Objekt hat einen Typ, zB für Sterne; Zwerg, Riese und Normal
Beginnt auch eine Farbe zu haben.
Also begann ich weit mit einer abstrakten Basisklasse für alle diese AstronomicalObject Objekte genannt:
public abstract class AstronomicalObject {
//Is this totally pointless?
}
Ich habe dann drei Klassen Star, Galaxy und Planeten, die diese Klasse erweitern. Für jeden Typ dieser Objekte habe ich zusätzliche Unterklassen gebildet, dh DwarfStar, der Star erweitert. Ist das eine akzeptable Idee? Die zusätzlichen Klassen fühlen sich etwas redundant:
public class DwarfStar extends Star{
public final String SIZE = "DWARF";
public DwarfStar(String colour) {
super(colour);
}
}
Für die Farbattribute ich dies tat:
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;
}
}
So ein Stern-Objekt erstellen ich verwenden würde:
DwarfStar ds = new DwarfStar(Star.YELLOW);
Leider doesn das Buch Habe keine Antworten Seite oder diskutiere diese Übung, also habe ich mich gefragt, ob meine Lösung ein gültiges Design ist. Oder wenn es verbessert werden könnte?
es ist besser, Enum anstelle von String-Konstanten zu verwenden – maks
Danke für das zeigen, –
Ich denke, in diesem einfachen Übung ist es nicht notwendig, die Klasse Stern Unterklasse. Wenn nur das Feld SIZE hinzugefügt werden soll, wäre es besser, einen Feldtyp in der Star-Klasse zu erstellen. Dies kann mit einer Enumeration realisiert werden. Meiner Meinung nach sollten Sie die Vererbung nur verwenden, wenn Sie sie wirklich brauchen, weil sie die Komplexität erhöht. – Don