Hi alle zusammen,
ich möchte eine komplexere Datenstruktur in Java erstellen und wollte mal fragen ob euch einfällt, wie man das ganze am Besten umsetzten kann.
Die Datenstruktur sieht in etwa wie folgt aus:
Grundsätzlich habe ich eine Expression. Dies kann jetzt genauer eine Konstante, eine Funktion oder eine Condition sein.
Die Condition setzt sich dann aus 3 weiteren Expressions (für den if-, then- und else-Teil) und einigen speziellen Methoden (z.B. printCond()) zusammen.
Eine Konstante kann nun wieder eine intConst, boolConst oder stringConst sein und besteht aus dem entsprechenden Wert und den spezifischen Methoden (getter, setter, print, ...)
Eine Funktion besteht aus 2 weiteren Expressions (funArg und funBody -> z.B. Function (+ (Konstante 2)) (Konstante 3))
Ich denke der ungefähre Aufbau ist klar ...
In Haskell würde das ganze in etwa so aussehen:
data Expression = Condition {if :: Expression, then :: Expression, else :: Expression}
| Constant
| Function {body :: Expression, arg :: Expression}
data Constant = intConst {val :: int}
| boolConst {val :: Bool}
| stringConst {val :: String}
---------------------------------------------------------------------------------------------------
Erst habe ich versucht eine abstrakte Klasse Expression zu schreiben und jedem Datentyp (Funktion, Condition, Konstante) eine eigene Klasse zu geben, die von Expression erbt. Damit gab es dann aber zum Beispiel bei der Methode setIfStatement(Expression ifExpr) in der Condition-Klasse Probleme, wenn ich die Methode wie folgt aufgerufen habe: setIfStatement(new Condition()); (--> da hier eigentlich eine Expression erwartet wird)
Im Moment habe ich das ganze so geregelt, dass in der (nicht mehr abstrakten) Klasse Expression eine Typvariable angibt, ob es sich um eine Funktion, Condition, etc. handelt und alle Funktion (printCond, printFun, printConst, ...) sind nun in dieser Klasse enthalten.
Das ist aber selbstverständlich kein schöner Programmierstyle.
Mein Frage ist also, ob jemand von euch weiß wie man solch eine (in Haskell einfache Datenstruktur) in Java implementieren kann damit man damit gut arbeiten kann ...
Ich bedanke mich schon mal im Voraus für jegliche Hilfe!!
ich möchte eine komplexere Datenstruktur in Java erstellen und wollte mal fragen ob euch einfällt, wie man das ganze am Besten umsetzten kann.
Die Datenstruktur sieht in etwa wie folgt aus:
Grundsätzlich habe ich eine Expression. Dies kann jetzt genauer eine Konstante, eine Funktion oder eine Condition sein.
Die Condition setzt sich dann aus 3 weiteren Expressions (für den if-, then- und else-Teil) und einigen speziellen Methoden (z.B. printCond()) zusammen.
Eine Konstante kann nun wieder eine intConst, boolConst oder stringConst sein und besteht aus dem entsprechenden Wert und den spezifischen Methoden (getter, setter, print, ...)
Eine Funktion besteht aus 2 weiteren Expressions (funArg und funBody -> z.B. Function (+ (Konstante 2)) (Konstante 3))
Ich denke der ungefähre Aufbau ist klar ...
In Haskell würde das ganze in etwa so aussehen:
data Expression = Condition {if :: Expression, then :: Expression, else :: Expression}
| Constant
| Function {body :: Expression, arg :: Expression}
data Constant = intConst {val :: int}
| boolConst {val :: Bool}
| stringConst {val :: String}
---------------------------------------------------------------------------------------------------
Erst habe ich versucht eine abstrakte Klasse Expression zu schreiben und jedem Datentyp (Funktion, Condition, Konstante) eine eigene Klasse zu geben, die von Expression erbt. Damit gab es dann aber zum Beispiel bei der Methode setIfStatement(Expression ifExpr) in der Condition-Klasse Probleme, wenn ich die Methode wie folgt aufgerufen habe: setIfStatement(new Condition()); (--> da hier eigentlich eine Expression erwartet wird)
Im Moment habe ich das ganze so geregelt, dass in der (nicht mehr abstrakten) Klasse Expression eine Typvariable angibt, ob es sich um eine Funktion, Condition, etc. handelt und alle Funktion (printCond, printFun, printConst, ...) sind nun in dieser Klasse enthalten.
Das ist aber selbstverständlich kein schöner Programmierstyle.
Mein Frage ist also, ob jemand von euch weiß wie man solch eine (in Haskell einfache Datenstruktur) in Java implementieren kann damit man damit gut arbeiten kann ...
Ich bedanke mich schon mal im Voraus für jegliche Hilfe!!