Inhaltsverzeichnis

LU11.A02 - Abstrakte Klasse für Taschenrechner

Ziel

Sie können eine umfassende Aufgabe mit diversen Techniken der OOP umsetzen.

Auftrag

Sie implementieren einen einfachen Rechner mit den Grundoperationen +, -, *, /, basierend auf dem gezeigten Klassendiagramm.

Hinweise

Schritt 1

  1. Akzeptieren Sie das Assignment im GitHub Classroom.
  2. Klonen Sie das Repository in Ihre Entwicklungsumgebung.
  3. Prüfen Sie, dass pytest und pylint funktionieren.

Schritt 2

Studieren Sie den Code der Klasse Reader.

Schritt 3

Implementieren Sie die beiden Exception-Klassen (in der Datei exceptions.py). Sie erben von der Klasse Exception aus der Python Bibliothek.

Schritt 4

Implementieren Sie die abstrakte Klasse MathOp (in der Datei math_operations.py) gemäss den Beispielen in der Theorie.

Testen Sie diesen Schritt mit dem Testfall test_math_op_instantiate in der Datei test_mathop_class_instantiation.py.

Schritt 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.

Testen Sie die Klassen mit den entsprechenden Testfällen aus der Datei test_math_operations.py.

Schritt 6

Implementieren Sie nun die Klasse Calculator in der Datei calculator.py.

read_input

create_concrete_op

Hier am Beispiel der Addierfunktion (Klasse Adder) gezeigt:

calculate

Diese Methode schreibt das Ergebnis in den Stdout.

Testen Sie die Klasse mit den Testfällen aus der Datei test_calculator.py.

Schritt 7

Implementieren Sie in der Datei main.py die Hauptroutine (main). Hier werden die Exceptions gefangen und verarbeitet. Das heisst, 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.

Abgabe

Die Teilaufgaben werden laufend auf GitHub mittels push abgelegt.


René Probst, bearbeitet durch Marcel Suter