Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m320_2024:learningunits:lu11:aufgaben:calculator [2024/10/22 08:00] – angelegt msuter | modul:m320_2024:learningunits:lu11:aufgaben:calculator [2024/10/22 13:39] (aktuell) – msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ==== Aufgabe 3 - Abstrakte Klasse für Taschenrechner ==== | + | ====== LU11.A02 |
| - | === Ziel === | + | ===== Ziel ===== |
| Sie können eine umfassende Aufgabe mit diversen Techniken der OOP umsetzen. | 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.\\ | + | ===== Auftrag |
| - | {{:modul:m320: | + | Sie implementieren einen einfachen Rechner mit den Grundoperationen +, -, *, /, basierend auf dem gezeigten Klassendiagramm. |
| - | **Beachte: | + | |
| + | {{:modul:m320_2024: | ||
| + | |||
| + | ==== Hinweise ==== | ||
| * Die beiden Klassen '' | * Die beiden Klassen '' | ||
| * Die Klasse '' | * Die Klasse '' | ||
| * Die beiden Exception-Klassen ('' | * Die beiden Exception-Klassen ('' | ||
| - | * Die Getter-Methoden werden " | ||
| * Pushen Sie jede Teilaufgabe mit Codegenerierung auf github. | * Pushen Sie jede Teilaufgabe mit Codegenerierung auf github. | ||
| - | \\ | + | |
| - | **Aufgabe | + | ===== Schritt |
| - | Laden Sie das Repo von github-classromm. Der Link findet sich im Moodle Kurs.\\ | + | |
| - | \\ | + | - Akzeptieren |
| - | **Aufgabe | + | |
| + | - Prüfen Sie, dass '' | ||
| + | |||
| + | ===== Schritt | ||
| Studieren Sie den Code der Klasse '' | Studieren Sie den Code der Klasse '' | ||
| * Was fällt Ihnen auf? | * 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. | * 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.\\ | + | |
| - | \\ | + | ===== Schritt |
| - | **Aufgabe | + | Implementieren Sie die beiden Exception-Klassen (in der Datei '' |
| - | Implementieren Sie die beiden Exception-Klassen (in der Datei '' | + | Sie erben von der Klasse '' |
| * '' | * '' | ||
| - | * '' | + | * '' |
| - | \\ | + | |
| - | **Aufgabe | + | ===== Schritt |
| - | Implementieren Sie die abstrakte Klasse '' | + | |
| + | Implementieren Sie die abstrakte Klasse '' | ||
| * Halten Sie sich an das Klassendiagramm. Es zeigt ihnen - durch //kursive// Nennung - die abstrakte Methode. | * 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. | * Implementieren Sie die andere Methode als Property. Sie ist nicht abstrakt und muss daher einen Code enthalten. | ||
| - | Testen Sie diesen Schritt mit dem Testfall '' | + | |
| - | \\ | + | Testen Sie diesen Schritt mit dem Testfall '' |
| - | **Aufgabe | + | |
| - | Implementieren Sie die 4 Klassen '' | + | ===== Schritt |
| - | * Erstellen Sie diese 4 Klassen | + | |
| + | Implementieren Sie die 4 Klassen '' | ||
| + | Dabei müssen Sie die abstrakte Methode der Oberklasse '' | ||
| + | |||
| + | * Erstellen Sie diese 4 Klassen | ||
| * Die Funktion '' | * Die Funktion '' | ||
| - | * Beachten Sie, dass die Klasse '' | + | * Beachten Sie, dass die Klasse '' |
| - | Testen Sie die Klassen mit den entsprechenden Testfällen aus der Datei '' | + | |
| - | \\ | + | Testen Sie die Klassen mit den entsprechenden Testfällen aus der Datei '' |
| - | **Aufgabe | + | |
| + | ===== Schritt | ||
| Implementieren Sie nun die Klasse '' | Implementieren Sie nun die Klasse '' | ||
| * Halten Sie sich an die Vorgaben des Klassendiagramms und an die Hinweise in der Datei. | * 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.\\ | + | * 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: | + | * Die Methoden sind entsprechend der folgenden Sequenzdiagramme zu implementieren: |
| + | * | ||
| + | ==== read_input | ||
| + | |||
| + | {{:modul:m320_2024: | ||
| + | |||
| + | ==== create_concrete_op | ||
| + | |||
| + | Hier am Beispiel der Addierfunktion (Klasse '' | ||
| + | |||
| + | {{:modul:m320_2024: | ||
| + | |||
| + | ==== calculate | ||
| + | Diese Methode | ||
| + | |||
| + | {{:modul:m320_2024: | ||
| Testen Sie die Klasse mit den Testfällen aus der Datei '' | Testen Sie die Klasse mit den Testfällen aus der Datei '' | ||
| - | \\ | + | |
| - | **Aufgabe | + | ===== Schritt |
| - | Implementieren Sie in der Datei '' | + | |
| - | Hier werden die Exceptions | + | Implementieren Sie in der Datei '' |
| - | Halten Sie sich dabei an das folgende Sequenzdiagramm. | + | Hier werden die Exceptions |
| - | \\ | + | Das heisst, |
| - | Führen Sie das Programm aus. Sie sollten eine vergleichbare Ausagbe erhalten.\\ | + | Halten Sie sich dabei an das folgende Sequenzdiagramm. |
| + | |||
| + | {{:modul:m320_2024: | ||
| + | |||
| + | Führen Sie das Programm aus. | ||
| + | Sie sollten eine vergleichbare Ausagbe erhalten. | ||
| {{: | {{: | ||
| - | === Abgabe === | + | ===== Abgabe |
| - | Die Teilaufgaben werden laufend auf github | + | Die Teilaufgaben werden laufend auf GitHub |
| - | Wenn Ihr Programm erfolgreich ausgeführt werden kann, zeigen sie die Lösung der '' | + | |
| ---- | ---- | ||
| - | [[https:// | + | {{tag> |
| + | [[https:// | ||