Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m320_2024:learningunits:lu11:aufgaben:calculator [2026/08/30 14:05] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m320_2024:learningunits:lu11:aufgaben:calculator [2026/08/30 14:06] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== 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. | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== Hinweise ==== | ||
| + | |||
| + | * Die beiden Klassen '' | ||
| + | * Die Klasse '' | ||
| + | * Die beiden Exception-Klassen ('' | ||
| + | * Pushen Sie jede Teilaufgabe mit Codegenerierung auf github. | ||
| + | |||
| + | ===== Schritt 1 ===== | ||
| + | |||
| + | - Akzeptieren Sie das Assignment im GitHub Classroom. | ||
| + | - Klonen Sie das Repository in Ihre Entwicklungsumgebung. | ||
| + | - Prüfen Sie, dass '' | ||
| + | |||
| + | ===== Schritt 2 ===== | ||
| + | |||
| + | Studieren Sie den Code der Klasse '' | ||
| + | * Was fällt Ihnen auf? | ||
| + | * Was bewirkt eine Klasse, die als **Singleton** deklariert ist? Studieren Sie dazu das WEB. Wir haben das Thema **Singleton** auch schon einmal kurz angesprochen. | ||
| + | |||
| + | ===== Schritt 3 ===== | ||
| + | Implementieren Sie die beiden Exception-Klassen (in der Datei '' | ||
| + | Sie erben von der Klasse '' | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ===== Schritt 4 ===== | ||
| + | |||
| + | Implementieren Sie die abstrakte Klasse '' | ||
| + | * Halten Sie sich an das Klassendiagramm. Es zeigt ihnen - durch //kursive// Nennung - die abstrakte Methode. | ||
| + | * Implementieren Sie die andere Methode als Property. Sie ist nicht abstrakt und muss daher einen Code enthalten. | ||
| + | |||
| + | Testen Sie diesen Schritt mit dem Testfall '' | ||
| + | |||
| + | ===== Schritt 5 ===== | ||
| + | |||
| + | Implementieren Sie die 4 Klassen '' | ||
| + | Dabei müssen Sie die abstrakte Methode der Oberklasse '' | ||
| + | |||
| + | * Erstellen Sie diese 4 Klassen jeweils in einer eigenen Datei. | ||
| + | * Die Funktion '' | ||
| + | * Beachten Sie, dass die Klasse '' | ||
| + | |||
| + | Testen Sie die Klassen mit den entsprechenden Testfällen aus der Datei '' | ||
| + | |||
| + | ===== Schritt 6 ===== | ||
| + | |||
| + | Implementieren Sie nun die Klasse '' | ||
| + | * Halten Sie sich an die Vorgaben des Klassendiagramms und an die Hinweise in der Datei. | ||
| + | * Wichtig ist, dass Sie hier keine Exceptions fangen und auswerten. Das geschieht dann alles in der main-Routine. | ||
| + | * Die Methoden sind entsprechend der folgenden Sequenzdiagramme zu implementieren: | ||
| + | | ||
| + | ==== read_input ==== | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== create_concrete_op ==== | ||
| + | |||
| + | Hier am Beispiel der Addierfunktion (Klasse '' | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | ==== calculate ==== | ||
| + | Diese Methode schreibt das Ergebnis in den Stdout. | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | Testen Sie die Klasse mit den Testfällen aus der Datei '' | ||
| + | |||
| + | ===== Schritt 7 ===== | ||
| + | |||
| + | Implementieren Sie in der Datei '' | ||
| + | Hier werden die Exceptions gefangen und verarbeitet. | ||
| + | Das heisst, dass jeweils eine entsprechende Meldung auf den Stdout (mit '' | ||
| + | Halten Sie sich dabei an das folgende Sequenzdiagramm. | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | Führen Sie das Programm aus. | ||
| + | Sie sollten eine vergleichbare Ausagbe erhalten. | ||
| + | |||
| + | {{modul: | ||
| + | |||
| + | |||
| + | ===== Abgabe ===== | ||
| + | Die Teilaufgaben werden laufend auf GitHub mittels '' | ||
| + | |||
| + | ---- | ||
| + | {{tag> | ||
| + | [[https:// | ||