Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:archiv:m320:learningunits:lu99:aufgaben:lu08-aufgabe_calculator [2026/08/30 14:06] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | modul:archiv:m320:learningunits:lu99:aufgaben:lu08-aufgabe_calculator [2026/08/30 14:10] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden 74.7.243.195 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ==== Aufgabe 3 - 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.\\ | ||
| + | {{modul: | ||
| + | **Beachte: | ||
| + | * Die beiden Klassen '' | ||
| + | * Die Klasse '' | ||
| + | * Die beiden Exception-Klassen ('' | ||
| + | * Die Getter-Methoden werden " | ||
| + | * Pushen Sie jede Teilaufgabe mit Codegenerierung auf github. | ||
| + | \\ | ||
| + | **Aufgabe 1**\\ | ||
| + | Laden Sie das Repo von github-classromm. Der Link findet sich im Moodle Kurs.\\ | ||
| + | \\ | ||
| + | **Aufgabe 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. | ||
| + | Besprechen Sie Ihre Erkenntnisse mit der Lehrperson.\\ | ||
| + | \\ | ||
| + | **Aufgabe 3**\\ | ||
| + | Implementieren Sie die beiden Exception-Klassen (in der Datei '' | ||
| + | * '' | ||
| + | * '' | ||
| + | \\ | ||
| + | **Aufgabe 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 '' | ||
| + | \\ | ||
| + | **Aufgabe 5**\\ | ||
| + | Implementieren Sie die 4 Klassen '' | ||
| + | * Erstellen Sie diese 4 Klassen auch in der Datei '' | ||
| + | * Die Funktion '' | ||
| + | * Beachten Sie, dass die Klasse '' | ||
| + | Testen Sie die Klassen mit den entsprechenden Testfällen aus der Datei '' | ||
| + | \\ | ||
| + | **Aufgabe 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: | ||
| + | Testen Sie die Klasse mit den Testfällen aus der Datei '' | ||
| + | \\ | ||
| + | **Aufgabe 7**\\ | ||
| + | Implementieren Sie in der Datei '' | ||
| + | Hier werden die Exceptions bearbeitet, d.h. dass jeweils eine entsprechende Meldung auf den Stdout (mit '' | ||
| + | Halten Sie sich dabei an das folgende Sequenzdiagramm. \\ {{modul: | ||
| + | \\ | ||
| + | Führen Sie das Programm aus. Sie sollten eine vergleichbare Ausagbe erhalten.\\ | ||
| + | {{modul: | ||
| + | |||
| + | |||
| + | === Abgabe === | ||
| + | Die Teilaufgaben werden laufend auf github mittels push-Befehl abgelegt.\\ | ||
| + | Wenn Ihr Programm erfolgreich ausgeführt werden kann, zeigen sie die Lösung der '' | ||
| + | |||
| + | ---- | ||
| + | [[https:// | ||