Sie können eine umfassende Aufgabe mit diversen Techniken der OOP umsetzen.
Sie implementieren einen einfachen Rechner mit den Grundoperationen +, -, *, /, basierend auf dem gezeigten Klassendiagramm.

Beachte:
Reader und Tokenizer sind vorgegeben und sollen/dürfen durch Sie nicht verändert werden.ZeroDivisionError stammt aus der Python-Bibliothek und darf nicht selber implementiert werden. Sie ist der Vollständigkeit wegen im Diagramm skizziert.NumberFormatException und OperationException) erben von Exception. Das ist hier im Diagramm aus Platzgründen nicht mehr gezeigt.@property implementiert, also ohne den Vorsatz get_···.
Aufgabe 1
Laden Sie das Repo von github-classromm. Der Link findet sich im Moodle Kurs.
Aufgabe 2
Studieren Sie den Code der Klasse Reader.
Besprechen Sie Ihre Erkenntnisse mit der Lehrperson.
Aufgabe 3
Implementieren Sie die beiden Exception-Klassen (in der Datei exceptions.py). Sie erben von der Klasse Exception aus der Python Bibliothek.
OperationException gibt folgenden Hinweis aus: „ERROR: ungültiges Operationszeichen eingegeben!“. Dabei wird nicht mitgeteilt, was falsch eingegeben wurde.NumberFormatException gibt folgenden Hinweis aus: „ERROR: falscher Text ist ein ungültiger Zahlenwert“. Hier steht falscher Text als Platzhalter für den konkret falsch eingegebenen Text.
Aufgabe 4
Implementieren Sie die abstrakte Klasse MathOp (in der Datei math_operations.py) gemäss der Theorie in LU07.
Testen Sie diesen Schritt mit dem Testfall test_math_op_instantiate in der Datei test_mathop_class_instantiation.py.
Aufgabe 5
Implementieren Sie die 4 Klassen Adder, Subtractor, Multiplier und Divider für die konkrete Umsetzung der mathematischen Operationen. Dabei müssen Sie die abstrakte Methode der Oberklasse MathOp überschreiben.
math_operations.pyexecute_op „weiss“ jeweils, welche Operation sie mit den beiden Zahlenwerten ausführen muss.Divider bei einer Division mit 0 die entsprechende Exception (ZeroDivisionError) werfen muss.
Testen Sie die Klassen mit den entsprechenden Testfällen aus der Datei test_math_operations.py.
Aufgabe 6
Implementieren Sie nun die Klasse Calculator in der Datei calculator.py.
Testen Sie die Klasse mit den Testfällen aus der Datei test_calculator.py.
Aufgabe 7
Implementieren Sie in der Datei main.py die Hauptroutine (main).
Hier werden die Exceptions bearbeitet, d.h. dass jeweils eine entsprechende Meldung auf den Stdout (mit print-Befehl) ausgegeben wird.
Halten Sie sich dabei an das folgende Sequenzdiagramm.

Führen Sie das Programm aus. Sie sollten eine vergleichbare Ausagbe erhalten.