Composite Pattern für Ausgabe von Ausdruck

Status
Nicht offen für weitere Antworten.
I

Incubus

Gast
Hilfeeeeee! :bahnhof:

Ich habe folgendes Problem:

Ich soll mit Hilfe des Composite Patterns einen Ausdruck richtig ausgeben.

Ausdruck --> (((a+b)*(a-c))+((b*d)-a)) --> Die Klammern werden in der Ausgabefunktion hard gecoded

Bisher habe ich folgenden Code welcher aber noch nicht wirklich richtig funktioniert:


Code:
interface Component {
   public String defaultMethod();
   public ArrayList<Component> getChildren();
   public boolean addComponent(Component c);
   public boolean removeComponent(Component c);
}

class Composite implements Component {
   private String id;
   private ArrayList<Component> components = new ArrayList<Component>();

   public Composite(String identification)         { id = identification; }

   [b]public String defaultMethod() { 
       String s =  id ; 
       for (Component child : getChildren())
           s = s +   child.defaultMethod();
       return s ;[/b]
   }

   public ArrayList<Component> getChildren()       { return components; }
   public boolean addComponent(Component c)        { return components.add(c); }
   public boolean removeComponent(Component c)     { return components.remove(c); }
}
   
class Leaf implements Component {
   private String id;

   public Leaf(String identification)              { id = identification; }

   public String defaultMethod()                   { return id; }
   public ArrayList<Component> getChildren()       { return null; }
   public boolean addComponent(Component c)        { return false; }
   public boolean removeComponent(Component c)     { return false; }
}

class CompositePattern {
   public static void main(String[] args) {
       Composite Plus = new Composite("+");
       Composite Plus1 = new Composite("+");
       Composite Mal = new Composite("*");
       Leaf a = new Leaf("a");
       Leaf b = new Leaf("b");
       Leaf c = new Leaf("c");
       Leaf d = new Leaf("d");
       Plus.addComponent(Plus1);
       Plus.addComponent(Mal);
       Plus1.addComponent(a);
       Plus1.addComponent(b);
       Mal.addComponent(c);
       Mal.addComponent(d);
       
        
       System.out.println( Plus.defaultMethod() );
  
   }
}

Die Ausgabe bei diesem Test lautet jetzt aber "+ +ab *cd" und nicht wie gewünscht a+b + c*d

Der Binärbaum wird leider Falsch abgearbeitet... :autsch:

Kann mir bitte einer helfen???

Thnx im Vorraus
 
S

SlaterB

Gast
ja schau dir deine Ausgabe-Operation doch mal an?
was macht die?
erst das eigene Zeichen und dann alle Kinder,

für a + b also

erst das +, dann a, dann b
-> "+ab"

und jetzt willst du wissen was du umstellen musst, damit "a+b" rauskommt?
versuche doch mal selber die Reihenfolge ein wenig umzustellen, viele Möglichkeiten gibts da ja eh nicht
 
I

Incubus

Gast
Ja, die Ausgabeoperation stimmt nicht. Nur irgendwie bekomme ich sie einfach nicht hin. Ich blicke da gerade nicht durch...

Wenn ich das ganze so mache:
Code:
for (Component child : getChildren()){
           s = s  +  child.defaultMethod();
           s= s +this.id;
       }
bekomme ich --> a-b-+c*d*+

Da habe ich aber immernoch en Minus und en Mal zuviel.
Habe schon versucht mit ner abfrage isLeaf() return boolean das ganze zu handeln. habe es aber nicht hinbekommen :-(
 
S

SlaterB

Gast
was soll denn das? denke doch mal nach, schreibe dir das per Hand auf,
BENUTZE EINFACHE BEISPIELE,

dein Code ist also
'für jedes Kind: zeige Kind und zeige Operation'

wie sieht das bei a + b aus?
erstes Kind a: also a+
dann noch ein Kind b: also b+ hinten dran
zusammen a+b+

offensichtlich falsch,

du hast drei Elemente: ein Kind, eine Operation und ein zweites Kind,

da schaffst du keine Ausgabe
"erstes Kind - Operation - zweites Kind"?
was ist daran so schwer?

bisher hast du schon
"Operation - erstes Kind - zweites Kind"
und
"erstes Kind - Operation - zweites Kind - Operation" geschafft,

nun weiter probieren bis
"erstes Kind - Operation - zweites Kind"?
rauskommt ;)
Tipp: versuche keine Schleifen, sondern drei simple Befehle hintereinander

--------

um Leaf musst du dich nicht kümmern, Leaf ist eine eigene Klasse, da ist die Operation schon fertig
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Composite, Design Pattern, printTree Allgemeine Java-Themen 42
F Composite Pattern in Java? Allgemeine Java-Themen 1
mihe7 equals und instanceOf pattern matching Allgemeine Java-Themen 9
L Pattern Eventhandler Allgemeine Java-Themen 5
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Z MVC Pattern - sinnvolle Integration Allgemeine Java-Themen 6
J Meinung zum verwendeten Design Pattern Allgemeine Java-Themen 4
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
Meeresgott Best Practice "Spezifisches" Factory Pattern ? Allgemeine Java-Themen 1
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
M Vaadin MVP Pattern Allgemeine Java-Themen 1
N Java MVC Pattern richtig anwenden Allgemeine Java-Themen 24
M OOP Design Pattern - "extends Observable implements Observer" Allgemeine Java-Themen 0
K Factory Pattern: Mit Generics umgehen Allgemeine Java-Themen 6
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
J Compilerfehler bis in java.util.regex.Pattern... Allgemeine Java-Themen 2
B MVC-Pattern größeres Beispiel Allgemeine Java-Themen 16
GreenTeaYT Verstehe nicht ganz das Observer Pattern in einer Arrayliste? Allgemeine Java-Themen 3
L Erste Schritte Java Date Format Pattern bestimmten Allgemeine Java-Themen 2
D Pattern mit Pattern vergleichen Allgemeine Java-Themen 3
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
S Hilfe bei geeignetem Pattern (Decorierer) Allgemeine Java-Themen 2
F Welches Design Pattern? Allgemeine Java-Themen 3
J Pattern aus String entfernen Allgemeine Java-Themen 2
S Pattern.Match Suche: For Schleife einbinden und in Liste schreiben Allgemeine Java-Themen 3
D Variablen zur Laufzeit global speichern (Registry Pattern?) Allgemeine Java-Themen 6
Rudolf State Pattern als Enum? Allgemeine Java-Themen 10
M massenhaft verschiedene Date-Pattern Allgemeine Java-Themen 3
Guybrush Threepwood Pattern gesucht: Punkt ohne Leerzeichen dahinter Allgemeine Java-Themen 3
turmaline OOP Decorater Pattern für Varifikationsverhalten Allgemeine Java-Themen 13
T HTML Tag Position mittels Pattern ermitteln Allgemeine Java-Themen 7
X Datentypen Prozentualer Abgleich zwischen 2 Strings (Pattern?) Allgemeine Java-Themen 3
H Pattern.compile Syntax Allgemeine Java-Themen 15
B RegEx: (Um-)formulieren eines Pattern zur Identifizierung komplexer URLs Allgemeine Java-Themen 7
D [Drag&Drop] Design-Pattern-Frage Allgemeine Java-Themen 4
T Pattern für Benutzer-Gruppen, RMI Allgemeine Java-Themen 5
E Super erzwingen, konzept/pattern gesucht. Allgemeine Java-Themen 8
H Problem mit der Klasse Pattern - Regulärer Ausdruck Allgemeine Java-Themen 2
Eldorado Meinung zu einem abgewandelten MVC-Pattern Allgemeine Java-Themen 2
R Matcher - Pattern mit belibigem Anfang Allgemeine Java-Themen 2
H Bestimmten String mit Pattern und Matcher herauslesen => kein erfolg Allgemeine Java-Themen 9
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
I Template Method pattern mit "geschützten Methoden" Allgemeine Java-Themen 5
T Pattern: Passive View Allgemeine Java-Themen 2
K Verständnisprobleme bei Observer-Pattern mit größerem Datenmodell Allgemeine Java-Themen 32
T Pattern: Greedy, Reluctant, Possessive Allgemeine Java-Themen 4
S Hilfe bei Pattern Allgemeine Java-Themen 5
N Registry Pattern Allgemeine Java-Themen 7
Tandibur Denkfehler bei Pattern.matches? Allgemeine Java-Themen 3
Tandibur pattern dynamisch vorkompilieren Allgemeine Java-Themen 9
A Observer Pattern: feuern bei neuer Referenz-Zuweisung? Allgemeine Java-Themen 8
N Pattern Allgemeine Java-Themen 11
Iron Monkey Pattern - Matcher - Problem Allgemeine Java-Themen 3
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
G Accordion Design Pattern Frage Allgemeine Java-Themen 2
hdi Hilfe beim Design (Stichwort OO, Pattern, ...) Allgemeine Java-Themen 11
U Verständnisschwierigkeiten Observer Pattern Allgemeine Java-Themen 18
H2SO3- String(pattern) von SimpleDateFormat auslesen Allgemeine Java-Themen 7
M Problem mit Pattern Allgemeine Java-Themen 3
N Welches design pattern? Allgemeine Java-Themen 8
B Pattern gesucht, Programm Optionen, Casten vermeiden Allgemeine Java-Themen 3
D Welches Pattern kann ich nutzen? Allgemeine Java-Themen 9
J Suche regex-Pattern fuer Liste von Zahlen zwischen 0-100 Allgemeine Java-Themen 6
G Sequenzdiagramm Dao Pattern Allgemeine Java-Themen 3
D Observer/Observable Pattern vs. Listener-Konzept Allgemeine Java-Themen 4
S regex-Pattern Ausdruck negieren Allgemeine Java-Themen 2
J Pattern eines Textes Allgemeine Java-Themen 4
M Java Garbage Collector Frage (Singleton Pattern) Allgemeine Java-Themen 13
Y Pattern Problem Allgemeine Java-Themen 2
G UML-Diagramme mit DAO Pattern Allgemeine Java-Themen 7
S Pattern regex Allgemeine Java-Themen 2
J Regex Pattern Problem Allgemeine Java-Themen 12
P MVC Pattern Allgemeine Java-Themen 31
C Pattern für Kommunikation gesucht Allgemeine Java-Themen 3
G Frage zu MVC Pattern Allgemeine Java-Themen 6
J Pattern und Regex Allgemeine Java-Themen 2
L Wie Pattern anwenden um Cipher zu nutzen Allgemeine Java-Themen 2
S Singleton Pattern mit Generics Allgemeine Java-Themen 4
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
F Typüberprüfung in Superklasse - geeignetes Pattern? Allgemeine Java-Themen 11
M Java Pattern hilfe Allgemeine Java-Themen 6
N Observer Pattern Allgemeine Java-Themen 2
G Problem mit MVC-Pattern (Controller als anonyme Unterklasse) Allgemeine Java-Themen 2
F Design Pattern zur Realisierung von Mehrfachvererbung? Allgemeine Java-Themen 8
M Pattern aus Properties Allgemeine Java-Themen 3
G mit Pattern strings filtern ein kleines problemchen ;) Allgemeine Java-Themen 2
M nach einem Pattern splitten Allgemeine Java-Themen 2
G problem mit dem observer pattern Allgemeine Java-Themen 3
C Matcher/Pattern ersetzten für JDK 1.3 Allgemeine Java-Themen 2
M Pattern: Summary of regex constructs: Backslash Allgemeine Java-Themen 2
G Scanner und Abbruchbedingung/Pattern Allgemeine Java-Themen 2
F suche im Classpath mit Pattern *.gif Allgemeine Java-Themen 16
G Frage zum Observer Pattern Allgemeine Java-Themen 4
D Design Pattern: Singleton Allgemeine Java-Themen 4
M Pattern, Matcher, Split Allgemeine Java-Themen 2
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3
Karl_Der_Nette_Anfänger Hat wer ne Lösung für verknüpfte Postleitzahlen? (Baum/Wurzel Struktur) Allgemeine Java-Themen 11
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben