• Keine Ergebnisse gefunden

Programmier-Klausur Programmieren 2 – PZR 1 (16.7.2018)

N/A
N/A
Protected

Academic year: 2022

Aktie "Programmier-Klausur Programmieren 2 – PZR 1 (16.7.2018)"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Programmier-Klausur

Programmieren 2 – PZR 1 (16.7.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:

Sie sollen eine Klasse (Lager) implementieren. Objekte der Klasse Lager sollen in der Lage sein, zwei Güter zu verwalten: Objekte von Typ Apfel und Birne. Hier ein Vorschlag für die Klasse Apfel.

class Apfel {

private static int number = 0; // class member – geteilt von allen Objekten der Klasse private int thisNumber; // object member – Identität des Objektes

Apfel() {

this.thisNumber = Apfel.number++; // erzeuge Objekt / Identität automatisch gesetzt }

int getThisNumber() {

return this.getThisNumber(); // gibt den Zustand / Identität des Objektes zurück }

@Override

public String toString() {

return "Apfel #" + this.thisNumber; // macht Ausgabe auf der Konsole einfacher.

} }

Diese Code werden Sie im folgenden sicherlich verändern und erweitern. Das ist nur ein Anfang. Sie sehen darin aber auch folgende Idee: Jedes Apfelobjekt erhält bei der Erzeugung über den Default-Konstruktur eine Identität.

(2)

Objekte der Klasse Birne sollen identische Eigenschaften haben. Auch sie haben eine Identität, die bei der Erzeugung eines Birnen-Objektes zugewiesen wird. Implementieren Sie entsprechend eine Klasse namens Birne. Die einfachste Implementierung würde darin bestehen, den Apfel-Code zu kopieren und Klassenname und Konstruktor zu verändern.

Tun Sie das, wenn Sie mögen.

Das Software-System das sie entwickeln soll nun folgende weitere Eigenschaften haben:

1. Objekte der Klassen Apfel und Birne sollen vergleichbar sein. Es soll eine Methode greaterThan geben, die entscheiden kann, ob ein Objekt größer ist als das andere.

Im dem Fall soll sie true liefern – im anderen Fall false. Sie sind völlig frei in der Definition einer solchen Ordnungsrelation. Sie sind frei, die Klasse Apfel oben zu verändern oder gar komplett neu zu implementieren. Sie sind frei weitere Strukturen zu definieren. Wenn Sie meinen, dass Äpfel und Birnen einen Preis, ein Gewicht, eine Farbe oder was auch immer haben müssen, dann nutzen Sie das. Entscheiden, dokumentieren und implementieren Sie eine Ordnungsrelation, die Apfel und Birnen-Objekte vergleichbar macht!

2. Implementieren Sie eine Klasse Lager! Lager-Objekte sollen Objekte der Klassen Apfel und Birne in einer(!) Datenstruktur speichern. Nutzen Sie zur Speicherung intern keine Arrays! Es soll eine Methode int putGood geben, die ein Objekt speichert. Es soll ein Index zurück gegeben werden, mit dem das Objekt wieder bezogen werden kann. Die Methode getGood(int index) soll eine Referenz auf das gespeicherte Objekt zurück geben. Beachten Sie den Umgang mit möglichen

Fehlern.

3. Das Lager-Objekt soll in der Lage sein, eine sortiertes (Sortiert nach Ihrer Definition) Array der gespeicherte Objekte zu liefern. Die Signatur soll in etwa wie folgt

aussehen: ?[] getSortedArray();

Es wird ein Array mit Objektreferenzen erwartet. Das Array wird gemischt Referenzen auf Apfel- oder Birne-Objekte enthalten können.

Zeigen Sie durch Tests die Lauffähigkeit und Fehlerresistenz Ihres Programms.

Beachten Sie die mehrfach diskutierten Bewertungskriterien für guten Code.

Referenzen

ÄHNLICHE DOKUMENTE

Ich glaube, daß die Frage der Konkurrenz- fähigkeit alternativer Energien auf dem Markt überhaupt nicht mehr zur Diskussion steht. Die Art der durchgeführten Kalkulatio- nM

getSum(int index): Diese Methode soll die Summe aller Werte des Array liefern, auf das mit a2[index] verwiesen wird.. Vervollständigen Sie die Signatur der Methode wenigstens mit

Implementieren Sie einen endlichen deterministischen Automaten. Ein solcher Automat startet in einem Startzustand. Dann kann man ihm Zeichen übergeben. Wir nehmen einen String

Er soll über einen Speicher verfügen, in dem das Ergebnis der letzten Operation gespeichert wird.. Dieser Speicher wird mit 0

Der Automat soll nach dem Lesen der gesamten Eingabe ein Symbol für Ja / Nein zurück geben – es bietet sich ein boolean-Wert an.. Er teilt so mit, ob die gelesenen Zeichen einen

• Man kann eine Zahl zum aktuellen Speicher addieren (unäre Operation).. • Der Speicher kann in einem File persistent gemacht

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

Algeria Target of 27% share of renewable electricity by 2030 was translated to renewables share in TPES assuming renewables input increases proportionally to share in