| ... | @@ -132,3 +132,13 @@ Erweitere dein bestehendes Taschenrechner-Konsolenprogramm um ein einfaches Men | 
... | @@ -132,3 +132,13 @@ Erweitere dein bestehendes Taschenrechner-Konsolenprogramm um ein einfaches Men | 
| 
 | 
Erweitere dein Taschenrechner-Programm, indem du Fehlerbehandlung mit `try-catch` einbaust. 
 | 
 | 
Erweitere dein Taschenrechner-Programm, indem du Fehlerbehandlung mit `try-catch` einbaust. 
 | 
| 
 | 
 | 
 | 
 | 
| 
 | 
Fange ungültige Nutzereingaben, wie Buchstaben statt Zahlen oder ungültige Rechenoperationen, ab und werfe eigene Exceptions die du (in der UI!) fängst und entsprechende Fehlermeldungen ausgibst.
 | 
 | 
Fange ungültige Nutzereingaben, wie Buchstaben statt Zahlen oder ungültige Rechenoperationen, ab und werfe eigene Exceptions die du (in der UI!) fängst und entsprechende Fehlermeldungen ausgibst.
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
## Aufgabe 5
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
Erweitere deinen Taschenrechner um eine History-Funktion. Nach jeder erfolgreichen Berechnung soll ein History-Eintrag erstellt und in einer `MutableList` in einem Adapter gespeichert werden. 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
Lege für die HistoryEinträge eine `data class` an, die zwei Eigenschaften enthält: den Rechenterm als strukturierter Ausdruck und das Ergebnis als `Int`. 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
### Bonus
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
Der Rechenterm soll dabei durch eine `sealed interface`- bzw `seald class`-Struktur dargestellt werden, z. B. mit konkreten Klassen für die einzelnen Operationen, etc. So lässt sich jeder Ausdruck als strukturierter Baum (z. B. `Add(Num(3), Num(4))`) modellieren. |