studyklar
GdI 2 · Probeklausur Teil 2 · Aufgabe 8

Vier Vorlesungen in einer Liste, die ersten drei sicher ausgeben

Vier Vorlesungen sollen in eine Sammlung, danach werden die ersten drei ausgegeben. Dafür passt eine Liste, weil sie die Reihenfolge behält. Die Schleife bekommt eine zweite Bedingung, damit sie nie über das Ende der Liste hinausläuft. Rechts stehen die Zeilen der Lösung und die Liste als Kästen. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 8

Gegeben ist eine Klasse „Vorlesung“. Sie verfügt über einen kanonischen Konstruktor mit der folgenden Signatur:

public Vorlesung(String bezeichnung, String dozent)

Zudem gibt es eine toString-Methode, die die Attribute einer Vorlesung ausgibt.

Schreiben Sie den Java-Code, der folgendes tut:

  • Eine Collection anlegen, die beliebig viele Vorlesung-Objekte in einer bestimmten Reihenfolge aufnehmen kann. Wählen Sie eine geeignete Collection aus.
  • Vier Vorlesung-Objekte anlegen (die Werte für bezeichnung und dozent sind frei wählbar)
  • Die vier Vorlesung-Objekte der Collection hinzufügen.
  • Mit Hilfe einer Schleife die Inhalte der ersten drei Vorlesung-Objekte, die sich in der Collection befinden, auf der Konsole ausgeben.

Es soll auch für den Fall vorgesorgt werden, dass der Code einmal so geändert wird, dass anstelle von vier Vorlesung-Objekten weniger als drei Vorlesung-Objekte in die Collection eingetragen werden. In der Schleife soll daher sichergestellt werden, dass dann nur die Inhalte der tatsächlich vorhandenen Objekte ausgegeben werden.

Geben Sie nur die benötigten Code-Zeilen an, keine umgebende Methode oder Klasse, und auch keine Importe.

Gesucht sind nur die Codezeilen, ohne Klasse, ohne Methode, ohne Importe. Sie legen eine Liste an, füllen sie mit vier Vorlesungen und geben die ersten drei aus. Die Schleife muss auch dann funktionieren, wenn jemand später nur ein oder zwei Vorlesungen einträgt.

Merke: Eine Liste zählt ihre Plätze ab 0. Die ersten drei Elemente stehen an Index 0, 1 und 2. Ein Index, den es nicht gibt, führt zum Absturz. Darum prüft die Schleife vor jedem Zugriff, ob i kleiner ist als die Länge der Liste.
  1. Eine passende Collection wählen und anlegen.
  2. Vier Objekte anlegen und in die Liste einfügen.
  3. Eine Schleife für die ersten drei.
  4. Die zweite Bedingung für kurze Listen, dann ein Probelauf.

Der kanonische Konstruktor ist der Konstruktor, der alle Attribute setzt: ein Parameter je Attribut, hier bezeichnung und dozent. Ein neues Objekt entsteht also mit new Vorlesung(bezeichnung, dozent).

Aus Probeklausur Teil 1, Aufgabe 5 („Fahrzeug mit eigenem Tank: Objekt im Attribut, toString ohne Getter“): Ein kanonischer Konstruktor hat genau einen Parameter je Attribut, in derselben Reihenfolge, und setzt jedes Attribut auf den übergebenen Wert.

Die Klasse Vorlesung ist in der Aufgabe gegeben, aber nicht abgedruckt. Für den Probelauf haben wir sie selbst geschrieben. Zu dieser Probeklausur gibt es keine Musterlösung; die Lösung hier ist selbst erarbeitet und ausgeführt.

Eine geeignete Collection: die ArrayList

List<Vorlesung> vorlesungen = new ArrayList<>();

Gefordert sind „beliebig viele“ Objekte „in einer bestimmten Reihenfolge“. Ein Array hat eine feste Länge, passt also nicht. Eine Liste (List) wächst mit jedem Element und behält die Reihenfolge, in der man einfügt. Eine Menge (Set) hätte keine feste Reihenfolge.

List ist ein Interface, es sagt nur, was eine Liste kann. ArrayList ist eine Klasse, die es umsetzt. In spitzen Klammern steht, was in die Liste darf: Vorlesung. Rechts bei new ArrayList dürfen die spitzen Klammern leer bleiben (<>); Java übernimmt den Typ von links.

Aus Blatt 7, Aufgabe 1 („Zwei Listen im Reißverschluss zusammenfügen“): Eine Liste ist wie ein Array, dessen Länge sich ändern kann. Man legt sie mit new ArrayList<>() an und fügt mit add hinten an.

Vier Vorlesung-Objekte anlegen

Vorlesung v1 = new Vorlesung("Grundlagen der Informatik 2", "Frau Berg");Vorlesung v2 = new Vorlesung("Mathematik 2", "Herr Kunz");Vorlesung v3 = new Vorlesung("Rechnernetze", "Frau Lang");Vorlesung v4 = new Vorlesung("Datenbanken", "Herr Roth");

Jedes Objekt entsteht mit new und dem gegebenen Konstruktor. Er verlangt zwei Strings in dieser Reihenfolge: zuerst die Bezeichnung, dann den Dozenten. Die Werte sind frei wählbar; hier stehen Beispielnamen.

Die Variablen v1 bis v4 halten die Objekte fest, bis sie im nächsten Schritt in die Liste kommen.

Noch 5 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Die Lösung

nur die Zeilen, wie verlangt

Abbildung 1Die Lösung

nur die Zeilen, wie verlangt

List<Vorlesung> vorlesungen = new ArrayList<>(); Vorlesung v1 = new Vorlesung("Grundlagen der Informatik 2", "Frau Berg");Vorlesung v2 = new Vorlesung("Mathematik 2", "Herr Kunz");Vorlesung v3 = new Vorlesung("Rechnernetze", "Frau Lang");Vorlesung v4 = new Vorlesung("Datenbanken", "Herr Roth"); vorlesungen.add(v1);vorlesungen.add(v2);vorlesungen.add(v3);vorlesungen.add(v4); for (int i = 0; i < 3 && i < vorlesungen.size(); i++) {    System.out.println(vorlesungen.get(i));}

Abbildung 1Die Lösung

nur die Zeilen, wie verlangt

vorlesungen mit 4 Objekten, Index 0 bis 3

v1
v2
v3
v4

vorlesungen mit 2 Objekten, Index 0 und 1

v1
v2
LegendeDie Liste als Kästen: oben mit vier Vorlesungen, unten mit zwei.