Programmier-Klausur
Programmieren 2 – PZR 1 (5.10.2018)
Erlaubte Hilfsmittel:
• Rechner (auch der eigene)
• IDE (IntelliJ, Netbeans, Eclipse)
• Dokumentationen Java
• 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:
Das Programm soll dazu dienen, Ihre wertvollen Besitztümer (Assets) zu verwalten. Jedes Asset hat zwei Eigenschaften: Preis (Integer (wir sind so reich, da interessieren
Kommastellen nicht ;) ) und Name (String).
Das Programm soll zwei spezielle Arten von Assets verwalten können: Immobilien (RealEstate) und Jacht (Yacht). Diese beiden spezielle Assets haben zusätzliche
Eigenschaften: eine Immobilie hat einen Quadratmeterzahl (Integer). Die Jacht hat eine Anzahl von Kabinen (Integer).
Implementieren Sie die Klassen, die die Werte dieser Assets speichern können.
Implementieren Sie Konstruktoren, mit denen Sie Objekte dieser Assets erzeugen können.
Es soll unmöglich sein, Objekte der Klasse Asset zu erzeugen. Stellen Sie das sicher.
Implementieren Sie zusätzlich Klassen, die das Memento-Pattern realisieren. Wenn Sie sich nicht an den Namen erinnern – kein Problem / keine Angst: Diese Klassen sollen den Zustand der Objekte in eine File schreiben. Der Zustand eines Objektes sind die Werte der Member. Diese weiteren Klassen sollen also die Asset-Objekte persistent machen. (Hinweis:
Wichtig werden Klassen wie File, FileInputStream, DataInputStream und die entsprechenden OutputStreams).
Diese Klassen soll außerdem in der Lage sein, Werte aus einem File zu lesen und und anhand der Werte Asset-Objekte zu erzeugen. Überlegen Sie, ob sich auch bei der Implementierung der Memento-Klassen, Ableitung anbietet.
Beweisen Sie die Funktionsfähigkeit Ihrer Software durch Tests. Die Gut-Tests sollen zeigen,
dass Sie RealEstate- und Yacht-Objekte über den Konstruktor erzeugen können, durch das Memento persistentieren können. Es soll auch gezeigt werden, dass der Inhalt eines Files dazu genutzt werden kann, ein Asset-Objekt der richtigen Klasse mit dem gespeicherten Zustand zu erzeugen.