... | @@ -142,3 +142,15 @@ Lege für die HistoryEinträge eine `data class` an, die zwei Eigenschaften enth |
... | @@ -142,3 +142,15 @@ Lege für die HistoryEinträge eine `data class` an, die zwei Eigenschaften enth |
|
### Bonus
|
|
### 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.
|
|
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.
|
|
|
|
|
|
|
|
### Aufgabe 6
|
|
|
|
|
|
|
|
Erweitere dein Taschenrechner-Projekt um automatisierte Tests. Erstelle Unit-Tests für die Eingabeverarbeitung, um sicherzustellen, dass sowohl gültige als auch ungültige Nutzereingaben korrekt erkannt und behandelt werden. Teste außerdem den Sonderfall einer Division durch 0, sodass dieser Fall ohne Absturz abgefangen wird. Zusätzlich soll geprüft werden, ob nach jeder erfolgreichen Berechnung ein korrekter History-Eintrag erzeugt und zur Liste hinzugefügt wird – inklusive des strukturierten Ausdrucks und des richtigen Ergebnisses. Abschließend soll ein Testreport erstellt werden, der die Ergebnisse der Tests dokumentiert.
|
|
|
|
|
|
|
|
### Aufgabe 7
|
|
|
|
|
|
|
|
Erweitere dein bestehendes Interface `Term` um zusätzliche Funktionalität. Definiere zunächst einen sogenannten „Fake-Konstruktor“, welcher automatisch das passende Rechenobjekt erstellt.
|
|
|
|
|
|
|
|
Zusätzlich soll eine Extension Function für das Interface `Term` geschrieben werden, welche die Berechnung des Terms durchführt und das Ergebnis als `Int` zurückliefert.
|
|
|
|
|
|
|
|
Verwende beide Funktionalitäten anschließend an den passenden Stellen im Code, insbesondere bei der Erstellung und Auswertung eines Rechenterms |