Programmier-Klausur
Programmieren 2 – PZR 2 (30.9.2019)
Erlaubte Hilfsmittel:
• Rechner (auch der eigene)
• IDE (IntelliJ, Netbeans, Eclipse)
• Dokumentationen Java (auch die Online-Javadoc von Oracle)
• Nur bei der Abgabe: Webbrowser um die Lösungen in Moodle einzustellen Ablauf:
Dauer: 90 Minuten
1. Lesen Sie die Aufgabe aufmerksam!
2. Implementieren Sie die Aufgabe!
3. Laden Sie die Lösung auf Moodle hoch.
Fragen? Fragen Sie so, dass alle die Frage und die Antwort hören können.
Aufgabe:
Sie sollen ein Programm schreiben, dass eine Einkaufsliste realisiert. Es folgt ein Beispiel.
Zeilen, die mit „>“ beginnen sollen die Eingabe andeuten. Zeilen ohne das Symbol sind die Ausgaben.
Bsp.:
> Äpfel 1 Gesamt: 1
> Äpfel 1
Exception: doppelte Eingabe Gesamt: 1
> Birnen 2 Gesamt: 3
> remove Äpfel Gesamt: 2
> Tesla 86800 Gesamt: 86802
> print Birnen 2 Tesla 86800
• Es gibt zwei Kommandos: remove und print.
• Remove hat einen Parameter: den Namen des zu löschenden Elements.
Die Eingabe bewirkt, dass das Element mit dem Namen gelöscht wird. Gibt es das Element nicht, passiert nichts.
• Print gibt die Einkaufsliste aus
• Beginnt die Zeile nicht mit einem Kommando, so wird es als neuer Eintrag interpretiert.
Ein neuer Eintrag besteht aus dem Element (z.B. „Äpfel“) und einem Preis. Wir arbeiten ohne Kommastellen im Preis.
Ein Element kann nur einmal in der Liste existieren. Ein doppelter Eintrag wird zurückgewiesen, siehe Beispiel. In jedem Fall wird der aktuelle Gesamtpreis des Einkaufes ausgegeben.
Die Liste ist persistent im Filesystem zu speichern.
Das Programm soll jederzeit beendet werden können. Nach dem Neustart soll die Liste im vorherigen Zustand vorhanden sein.
Arbeiten Sie test-getrieben:
Schreiben Sie zuerst Tests, die die Funktionsfähigkeit Ihres Programms beweisen – und zwar alle Aspekte: Gute Fälle, schlechte Fälle, Randfälle, die Persistierung, Fehleingaben und was Ihnen noch einfällt.
Implementieren Sie danach. Nutzen Sie sich die Regeln guten Codes für Java-Programme, die Prinzipien dont-repeat-yourself, make-it-explicit, program-to-interface und alles, was wir über gutes Programmieren im Kurs diskutierten.