Programmier-Klausur
Programmieren 2 – PZR 1 (21.1.2019)
Erlaubte Hilfsmittel:
• Rechner (auch der eigene)
• IDE (IntelliJ, Netbeans, Eclipse)
• Dokumentationen Java
• Ihre selbst programmierten Java-Klassen
• 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 Frage und Antwort hören können.
Aufgabe:
Implementieren Sie einen Rechner, der lediglich die Addition anbietet. Der Rechner soll folgende Funktionen anbieten:
• Er soll zwei Integer-Zahlen addieren können (binäre Operation)
• Der Rechner hat einen Speicher. Er speichert das Ergebnis jeder Operation.
• Der Speicher kann gelöscht werden, d.h. er wird auf 0 gesetzt
• Man kann eine Zahl zum aktuellen Speicher addieren (unäre Operation)
• Der Speicher kann in einem File persistent gemacht werden (save). Realisieren Sie die Persistenz mit dem Memento-Pattern. Nutzen Sie nicht das Serialization- Interface. Der Zustand des Rechners kann aus dem File wieder erzeugt werden (restore).
Gehen Sie nach den Prinzipien der testgetriebenen Entwicklung: Sie entwerfen ein
Interface, implementieren Tests (mit Junit Version 4 oder älter) und implementieren dann den Code.
Danach implementieren Sie eine Nutzerschnittstelle (Kommandozeile). Nach dem Start des Programms sollen der Rechner folgende Kommandos von der Kommendozeile (Standard- Input) lesen und folgende Ausgabe (Inhalt des Speichers) auf Standardout produzieren können:
• add 41 1 Ausgabe: 42→ Ausgabe: 42
• add 3 Ausgabe: 45→ Ausgabe: 42
• clear Ausgabe: 0→ Ausgabe: 42
• add 3 Ausgabe: 3→ Ausgabe: 42
• save Ausgabe: 3→ Ausgabe: 42
• add 1 Ausgabe: 4→ Ausgabe: 42
• restore Ausgabe: 3→ Ausgabe: 42
• add 1 Ausgabe: 4→ Ausgabe: 42
Implementieren Sie einen Test, der demonstriert, dass die gerade beschriebene Abfolge von Kommandos abläuft. Hinweis: Die Implementierung des Nutzerinterface wird als genauso aufwendig angesehen wie die Implementierung des restlichen Programms.