Die Klasse BinBaum legen wir als abstrakte Klasse an. Das bedeutet, dass wir einzelne Methoden erst als Spezialisierung der Klasse in einer abgeleiteten Klasse ausführen, während wir andere Methode, hier die drei verschiedenen Ausgabestrategien bereits hier definieren.
Das hat den Vorteil, dass die Methode fuegeEin je nach gewählter Einfüge-Strategie in der spezialisierten Klasse aufgeführt wird.
In UML sieht das folgendermaßen aus:
Die jeweiligen Ausgabe-Methoden, die public sind, beginnen jeweils bei der Wurzel, während die privaten bei einem beliebigen Knoten beginnen.
public abstract class BinBaum { public Knoten wurzel; public String inOrder() { inOrder(wurzel); } private String inOrder(Knoten knoten) { //selbst implementieren } public String preOrder() { preOrder(wurzel); } private String preOrder(Knoten knoten) { //selbst implementieren } public String postOrder() { postOrder(wurzel); } private String postOrder(Knoten knoten) { //selst implementieren } public abstract void fuegeEin(Object wert); }
Wie dabei jeweils die konkrete Ausgabe des Knotens in den drei Methoden passiert, hängt von der Anwendung ab: entweder per System.out.println oder als Ablage in einem String, dass dann natürlich noch in geeigneter Weise der Klasse übergeben werden muss.
© Ralph-Erich Hildebrandt, 14. Mai 2005