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:// |