Zielsetzung
Auf dieser Seite lernen Sie, wie man in Java mit Objekt-Arrays arbeitet. Dabei begleiten Sie eine Spielfigur auf ihrem Abenteuer und entwickeln eigene Klassen für Gegenstände, ein Inventar und schließlich sogar für einen Helden. Schritt für Schritt erweitern Sie das System und vertiefen dabei wichtige Konzepte der objektorientierten Programmierung – ganz praktisch und anschaulich.
Inhalt dieser Seite
Einleitung
Nachdem wir uns nun intensiv mit dem Aufbau von Java-Klassen, Instanzvariablen, Getter- und Setter-Methoden, Kontrollstrukturen wie if-else und switch-case sowie mit for- und while-Schleifen und ersten Arrays beschäftigt haben, möchten wir dieses Wissen in einem kleinen Projekt anwenden. Dazu dient ein einfaches Adventure-Spiel, das uns die Möglichkeit gibt, alle bisher behandelten Inhalte sinnvoll zu verknüpfen und zu vertiefen.
Solche projektorientierten Beispiele finden sich inzwischen auch in einigen Informatik-Schulbüchern – ob diese Idee durch meine Homepage angeregt wurde (die seit 1997 besteht) oder unabhängig entstanden ist, lässt sich natürlich schwer sagen. Wir beginnen nun jedenfalls mit der praktischen Umsetzung und folgen dabei einem Bottom-Up-Vorgehen: Zuerst entwerfen wir eine Klasse Gegenstand.
Im Mittelpunkt stehen dabei:
- Klassen und Instanzvariablen
- Getter- und Setter-Methoden
- Formatierte Ausgabe mit printf()
Ein Held mit einem Rucksack und Gegenständen
Autor: ChatGPT 4.0, 7/2025, Lizenz: Public domain
4.2.1 Die Klasse Gegenstand ↑
Bei einem solchen Gegenstand kann es sich beispielsweise um ein Schwert, ein Beil oder eine andere Waffe handeln, oder um einen Helm, einen Brustpanzer, einen Heiltrank oder Ähnliches, wie es eben in Abenteuerspielen üblich ist.
Attribute
Wer sich etwas mit Adventure-Games wie Diablo oder Baldur's Gate auskennt, wird sofort sagen können, was die wichtigsten Attribute eines solchen Gegenstands sind. Als erstes fallen dazu die folgenden Eigenschaften ein:
- Name
- Typ
- Seltenheit
- Angriffswert
- Verteidigungswert
- Goldwert
- Gewicht
- Zustand
Diese Attribute müssen jetzt mithilfe von Instanzvariablen implementiert werden. Für den Anfang beschränken wir uns aber auf vier Attribute, nämlich Angriffswert, Verteidigungswert, Goldwert und Zustand. Der erste Entwurf der Klasse Gegenstand würde dann so aussehen:
public class Gegenstand
{
private String name;
private int angriffswert, verteidigungswert, goldwert, zustand;
public Gegenstand(String n, int a, int v, int g)
{
name = n;
angriffswert = a;
verteidigungswert = v;
goldwert = g;
zustand = 100; // Prozent
}
public void anzeigen()
{
System.out.printf("%-20s %s%n", "Bezeichnung:", name);
System.out.printf("%-20s %5d%n", "Angriffswert:", angriffswert);
System.out.printf("%-20s %5d%n", "Verteidigungswert:", verteidigungswert);
System.out.printf("%-20s %5d%n", "Goldwert:", goldwert);
System.out.printf("%-20s %5d%%%n", "Zustand:", zustand);
}
}
Zum printf()-Befehl
In der anzeigen()-Methode wird übrigens reichlich Gebrauch printf(), der formatierten Ausgabe, gemacht. Die Strings werden mit genau 20 Stellen Breite angezeigt (%-20s). Der Strich vor der 20 führt dazu, dass die Ausgabe linksbündig erfolgt, ohne den Strich hätten wir eine rechtsbündige Ausgabe.
Dann folgt der Platzhalter für die auszugebende Variable.
- %s ist der Platzhalter für einen String ohne Angabe der Stellen
- %5e steht für eine int-Zahl mit Platz für 5 Stellen
- %n steht für einen Zeilenumbruch
- %% steht für das Prozentzeichen
Übung 4.2.1 #1
Ergänzen Sie Ihr Projekt um eine Testklasse, mit der das Erzeugen neuer Gegenstände sowie die Methode zum Anzeigen in der Konsole geprüft werden können. Kopieren Sie dazu den folgenden Quelltext in Ihr BlueJ- oder IntelliJ-Projekt.
public class TesteGegenstand // Für BlueJ
{
Gegenstand g0, g1, g2;
public TesteGegenstand()
{
g0 = new Gegenstand("Hammer",20,3,567);
g1 = new Gegenstand("Helm",0,13,230);
g2 = new Gegenstand("Stiefel",4,10,177);
g0.anzeigen();
System.out.println( );
g1.anzeigen();
System.out.println( );
g2.anzeigen();
System.out.println( );
}
}
public class TesteGegenstand // Für IntelliJ
{
Gegenstand g0, g1, g2;
public TesteGegenstand()
{
g0 = new Gegenstand("Hammer",20,3,567);
g1 = new Gegenstand("Helm",0,13,230);
g2 = new Gegenstand("Stiefel",4,10,177);
g0.anzeigen();
System.out.println( );
g1.anzeigen();
System.out.println( );
g2.anzeigen();
System.out.println( );
}
// ---------------------------
// main-Methode für IntelliJ
// ---------------------------
public static void main(String[] args)
{
new TesteGegenstand(); // Konstruktor führt alle Tests aus
}
}
Übung 4.2.1 #2
Schreiben Sie jetzt vier Setter-Methoden
- public void setName(int n)
- public void setAngriffswert(int a)
- public void setVerteidigungswert(int v)
- public void setGoldwert(int g)
Diese Setter-Methoden werden vom Konstruktor aufgerufen und weisen dann den vier Instanzvariablen korrekte Werte zu:
- name: mindestens 5 Zeichen, maximal 30 Zeichen Länge.
- angriffswert und verteidigungswert: mindestens 0, höchstens 200.
- goldwert: mindestens 0, höchstens eine Million.
Für zustand benötigen wir keine eigene Setter-Methode, er wird vom Konstruktor auf den Wert 100 gesetzt.
Hinweis: Die Länge des Namens können Sie wie folgt auf 30 Zeichen begrenzen:
name = name.substring(0, 30);
Die Methode substring() der Klasse String besitzt zwei Parameter. Der erste Parameter gibt an, an welchem Index der Substring anfangen soll. Der zweite Parameter gibt die Länge des Substrings an.
Falls der Name keine fünf Zeichen lang ist, soll er standardmäßig auf "Nicht definiert" oder eine andere Fehlermeldung gesetzt werden.
Übung 4.2.1 #3
- Verändern Sie den Konstruktor so wie im folgenden Quelltext.
- Passen Sie dann die Testklasse so an, dass auch Falscheingaben überprüft werden können.
public Gegenstand(String n, int a, int v, int g)
{
setName(n);
setAngriffswert(a);
setVerteidigungswert(v);
setGoldwert(g);
zustand = 100;
}
Übung 4.2.1 #4
Erhöhen Sie die Wartbarkeit der Klasse Gegenstand, indem Sie im Kopf der Klasse Konstanten deklarieren, mit denen die Mindest- und Höchstwerte der verschiedenen Instanzvariable festgelegt werden:
public class Gegenstand
{
// --- Konstanten ---
private static final int MIN_NAME_LEN = 5;
private static final int MAX_NAME_LEN = 30;
private static final int MIN_ANGRIFF = 0;
private static final int MAX_ANGRIFF = 200;
// und so weiter ...
// --- Felder ---
private String name;
private int angriffswert, verteidigungswert, goldwert, zustand;
// --- Konstruktor ---
Passen Sie dann die Setter-Methoden entsprechend an. Hier ein Beispiel für den Angriffswert:
public void setAngriffswert(int a)
{
if (a < MIN_ANGRIFF)
angriffswert = MIN_ANGRIFF;
else if (a > MAX_ANGRIFF)
angriffswert = MAX_ANGRIFF;
else
angriffswert = a;
}
Aufgabe
Wieso verbessern die Maßnahmen, die wir eben in Übung #4 getroffen haben, die Wartbarkeit des Quelltextes? Begründen Sie!
Wir wollen jetzt jeden Gegenstand mit einem Typ versehen, wobei wir sechs Kategorien unterscheiden:
- "Waffe"
- "Schild"
- "Rüstung"
- "Trank"
- "Werkzeug"
- "Sonstiges"
Man könnte hier eine Enumerations einsetzen, aber das erscheint mir für das 1. Semester etwas zu kompliziert. Statt dessen machen wir das folgendermaßen:
Wir ergänzen die Instanzvariablen um einen String-Array
// --- Gegenstands-Typen (Konstanten) ---
private static final String[] TYP_STRING =
{
"Waffe", "Schild", "Ruestung", "Trank", "Werkzeug", "Sonstiges"
};
verwalten den Typ des Gegenstandes aber als einfache int-Zahl zwischen 0 und 5. Typ 0 bedeutet dann "Waffe", Typ 1 "Schild" und so weiter.
Die Setter-Methode für die Instanzvariable typ sieht dann so aus:
public void setTyp(int t)
{
if (t < 0)
typ = 0;
else if (t >= TYP_STRING.length)
typ = TYP_STRING.length - 1; // oder: typ = 0;
else
typ = t;
}
Durch die Verwendung von typen.length können wir den Array typen problemlos um weitere Gegenstands-Typen erweitern. Für den Minimal-Wert von typ brauchen wir auch keine Konstante, denn typ ist nichts anderes als ein Array-Index, und dieser darf keinen Wert kleiner als 0 haben. Diesen Minimalwert werden wir also mit Sicherheit niemals ändern.
Die Methode zum Anzeigen der Gegenstände erweitern wir um einen weiteren printf()-Befehl:
System.out.printf("%-30s %s%n", "Typ:", TYP_STRING[typ]);
Übung 4.2.1 #5
Ergänzen Sie nun die Klasse Gegenstand um
- die Instanzvariable typString (Array, wie vorgegeben)
- die Instanzvariable typ (int)
- einen weiteren int-Parameter im Konstruktor für den Typ
- die vorgegebene Setter-Methode setTyp()
- einen weiteren printf()-Befehl in der anzeigen()-Methode, so dass der Typ als String zu sehen ist,
- eine Testklasse, in der auch der Typ überprüft werden kann.
Übung 4.2.1 #6
Die Instanzvariablen sind bisher alle als private deklariert. Um sie für andere Klassen des Projekts zugänglich zu machen, haben wir bereits Setter-Methoden definiert. Es fehlen aber noch die entsprechenden Getter-Methoden.
Ergänzen Sie die Klasse Gegenstand also um die noch fehlenden Getter-Methoden.
Übung 4.2.1 #7
Im Kampf oder durch Abnutzung kann ein Gegenstand beschädigt werden. Wir ein Gegenstand beispielsweise durch einen Kampf um 40% geschädigt, hat er nur noch einen Zustandswert von 60.
- Schreiben Sie eine Methode zum Beschädigen des Gegenstandes, in der die Instanzvariable zustand herabgesetzt wird.
- Ändern Sie dann die Getter-Methoden für angriffswert, verteidigungswert und goldwert so, dass bei der Berechnung der Wert der aktuelle (verringerte) Zustand berücksichtigt wird. Ein Schwert, das im neuen Zustand (100%) einen Angriffswert von 50 hat, hat dann nach einer Beschädigung um 40% nur noch einen Angriffswert von 30.
- Ändern Sie die ausgeben()-Methode so, dass nicht die Instanzvariablen für Angriffs-, Verteidigungs- und Goldwert ausgegeben werden, sondern die von den Getter-Methoden gelieferten aktuellen Werte.
Übung 4.2.1 #8
Wir benötigen noch eine Methode zum Reparieren des Gegenstandes. Dabei soll der Zustand wieder auf 100% gesetzt werden.
Da diese Aufgabe noch etwas zu simpel ist, wollen wir sie ein bisschen erweitern.
Ein beschädigter Gegenstand ist - auch nach der Reparatur - nicht mehr so viel wert wie ein ganz neuer Gegenstand. Die Methode reparieren() soll also den Goldwert nicht mehr auf 100% des ursprünglichen Goldwertes setzen, sondern einen bestimmten Betrag abziehen.
Einfache Variante: Ziehen Sie einen bestimmten festen Betrag ab, beispielsweise 10% des alten Goldwertes.
Anspruchsvolle Variante: Berücksichtigen Sie dabei die Höhe des Schadens, den der Gegenstand erlitten hat. Je höher der Schaden, desto mehr wird nach der Reparatur vom ursprünglichen Goldwert abgezogen.
4.2.2 Die Klasse Inventar ↑
An dieser Stelle wollen wir nun den Umgang mit Objekt-Arrays üben. Ein Objekt-Array enthält keine int- oder double-Zahlen oder andere primitive Datentypen, sondern Objekte einer Klasse. Alle Objekte des Arrays müssen aber der gleichen Klasse angehören.
Für Experten: Die Objekte des Arrays können auch unterschiedlichen Klassen angehören, aber diese verschiedenen Klassen müssen Unterklassen der gleichen Oberklasse sein. Wenn es also eine Oberklasse Figur gibt mit drei Unterklassen Kreis, Quadrat und Dreieck, dann kann ein Array aus Figur-Objekten auch Objekte der Klassen Kreis, Quadrat und Dreieck enthalten.
Hier der Quelltext der ersten Version einer solchen Inventar-Klasse:
public class Inventar
{
private Gegenstand[] item;
private int anzahl;
public Inventar()
{
item = new Gegenstand[12];
anzahl = 0;
erstellen();
}
public void erstellen()
{
hinzufuegen(new Gegenstand("Langschwert", 75, 0, 120, 0));
hinzufuegen(new Gegenstand("Kurzbogen", 60, 0, 150, 0));
hinzufuegen(new Gegenstand("Rundschild", 0, 45, 90, 1));
hinzufuegen(new Gegenstand("kleiner Heiltrank", 0, 0, 35, 3));
hinzufuegen(new Gegenstand("großer Heiltrank", 0, 0, 80, 3));
hinzufuegen(new Gegenstand("Brustpanzer", 0, 70, 300, 2));
hinzufuegen(new Gegenstand("Stiefel", 0, 15, 60, 2));
hinzufuegen(new Gegenstand("Goldhelm", 0, 25, 110, 2));
hinzufuegen(new Gegenstand("Dietrich", 0, 0, 25, 4));
hinzufuegen(new Gegenstand("Seil (20 m)", 0, 0, 18, 4));
hinzufuegen(new Gegenstand("Fackel", 0, 0, 10, 5));
hinzufuegen(new Gegenstand("Karte der Gegend", 0, 0, 45, 5));
}
public void ausgeben()
{
for (int i = 0; i < 12; i++)
{
item[i].anzeigen();
System.out.println();
}
}
private void hinzufuegen(Gegenstand g)
{
if (anzahl >= 12) return;
item[anzahl] = g;
anzahl++;
}
}
Hier sehen Sie die Klasse Inventar mit zwölf Gegenständen.
Um die Klasse für Erweiterungen flexibler zu halten, werden die Gegenstände hier über die Methode hinzufuegen() dem Inventar hinzugefügt. In diesem Quelltext ist die Anzahl der Gegenstände im Inventar auf 12 beschränkt. Dies kann man aber leicht ändern, indem man eine Konstante KAPAZITAET einführt, die bei der Initialisierung des Arrays und bei den for-Schleifen verwendet werden kann.
Übung 4.2.2 #1
Erweitern Sie die Klasse Inventar um eine solche Konstante und passen Sie dann die beiden for-Schleifen in den Methoden entsprechend an.
Übung 4.2.2 #2
Erstellen Sie eine Testklasse für das Inventar (siehe folgenden Quelltext).
Die Testklasse für die Gegenstände benötigen wir nicht mehr, sie kann aus dem Projekt entfernt werden.
public class TesteInventar
{
Inventar rucksack;
public TesteInventar()
{
rucksack = new Inventar();
rucksack.ausgeben();
}
public static void main(String[] args)
{
new TesteInventar();
}
}
Übung 4.2.2 #3
Rufen Sie in der Testklasse viermal die hinzufuegen()-Methode von Inventar auf, um zu testen, ob tatsächlich nur drei weitere Gegenstände hinzugefügt werden können, wenn die Kapazität 15 beträgt.
Allerdings müssen Sie dafür den Zugriffsstatus von hinzufuegen() in Inventar von private auf public ändern, sonst kann die Testklasse nicht auf diese Methode zugreifen.
Übung 4.2.2 #4
Bei einem Kampf werden alle Gegenstände des Inventars beschädigt.
Erweitern Sie die Klasse Inventar um eine Methode
public void beschaedigen(int prozent)
die alle Gegenstände des Inventars um die angegebene Prozentzahl beschädigt.
Achten Sie darauf, dass nicht unbedingt 15 Gegenstände in dem Inventar enthalten sein müssen, das Inventar kann auch weniger Gegenstände enthalten, die Kapazität ist dann nicht ausgeschöpft. Wenn also nur 10 Gegenstände enthalten sind, darf die beschaedigen()-Methode auch nur für diese 10 Gegenstände aufgerufen werden. Sie müssen also die Instanzvariable anzahl berücksichtigen.
Übung 4.2.2 #5
Erweitern Sie die die ausgeben()-Methode der Klasse Inventar um einen Parameter, mit dem Sie bestimmen können, welcher Typ von Gegenständen angezeigt werden soll. So soll es möglich sein, dass beispielsweise nur alle Waffen des Inventars gezeigt werden oder alle Tränke.
Der Parameter, den Sie dieser Methode übergeben, ist entweder ein String wie "Waffe" oder "Schild" oder eine int-Zahl zwischen 0 und 5. Sie können auch zwei ausgeben()-Methoden implementieren, eine für einen String-Parameter und eine andere für einen int-Parameter.
Übung 4.2.2 #6 (etwas aufwendiger)
In Spielen wie beispielsweise Baldur's Gate 3 wird auch darauf geachtet, dass der Rucksack ein bestimmtes Gewicht nicht überschreitet.
Teil 1 - Klasse Gegenstand
- Erweitern Sie die Klasse Gegenstand um eine Instanzvariable gewicht, zwei Konstanten MIN_GEWICHT und MAX_GEWICHT sowie um eine entsprechende Setter- und Getter-Methode.
- Erweitern Sie den Konstruktor der Klasse so, dass er das Gewicht als weiteren Parameter (double) übernehmen kann.
- Erweitern Sie die Ausgabe-Methode der Klasse um einen zusätzlichen printf()-Befehl zur Ausgabe des Gewichts.
Teil 2 - Klasse Inventar
1. Erweitern Sie die Klasse Inventar um zwei Konstanten
private static final double MIN_GEWICHT = 20;
private static final double MAX_GEWICHT = 200;
Ein Rucksack der Klasse Inventar muss also mindestens 20 kg fassen können, höchstens aber 200 kg.
2. Ergänzen Sie dann eine Instanzvariable aktuellesMaxGewicht, welche festlegt, wie viele Kilogramm das aktuelle Inventar-Objekt fassen kann.
Hintergrund: Im Adventure-Game gibt es vielleicht mehrere verschiedene Objekt der Klasse Inventar. Ein Rucksack kann vielleicht maximal 40 kg fassen, dann setzen Sie die Variable aktuellesMaxGewicht des Objektes auf 40 kg. Eine Schatztruhe dagegen kann vielleicht 140 kg fassen, entsprechend wäre der Wert von aktuellesMaxGewicht dann 140. Und vielleicht wird der Held, den wir noch einbauen müssen, im Laufe des Spiels immer stärker. Zunächst kann er nur einen Rucksack mit maximal 40 kg tragen, wenn er stärker geworden ist (oder einen Krafttrank getrunken hat), kann er vielleicht auch einen 50- oder 60 kg Rucksack schleppen. Daher ist es notwendig, die aktuelle Gewichts-Kapazität variabel zu halten. Die durch die Konstanten MIN_GEWICHT und MAX_GEWICHT definierten Werte legen nur die Unter- und Obergrenze der aktuellen Gewichts-Kapazität aktuellesMaxGewicht fest.
3. Die Instanzvariable aktuellesMaxGewicht soll durch eine eigene Setter-Methode verändert werden können.
4. Außerdem soll eine Getter-Methode das aktuelle Maximalgewicht zurückliefern können.
5. Die Methode hinzufuegen() des Inventars muss jetzt überprüfen, ob durch das Hinzufügen eines neuen Gegenstandes das maximal zulässige Gewicht überschritten wird. Ist das der Fall, kann der Gegenstand nicht mehr hinzugefügt werden.
4.2.3 Die Klasse Held ↑
Übung 4.2.3 #1
Erweitern Sie das Projekt um eine Klasse Held. Der Held soll einen Namen, einen Angriffswert und einen Verteidigungswert haben, außerdem Lebenspunkte.
Die neuen Instanzvariablen sollten alle vom Typ int sein.
Die Lebenspunkte sollen folgendermaßen festgelegt werden:
leben = 80 + zufälliger Wert zwischen 1 und 20
Ergänzen Sie die Klasse dann um entsprechende Setter- und Getter-Methoden. Die Setter-Methoden sollen die Überprüfung der Parameter des Konstruktors übernehmen, ähnlich wie bei der Klasse Gegenstand.
Angriffswert und Verteidigungswert sollten >= 0 und <= 200 sein (Konstanten!), und für die Lebenspunkte gilt >= 0 und <= 100.
Der Konstruktor könnte dann so aussehen:
public Held(String name, int angriff, int verteidigung)
{
Random rGenerator = new Random();
this.name = name;
setAngriffswert(angriff);
setVerteidigungswert(verteidigung);
leben = 80 + rGenerator.nextInt(20)+1;
}
Zufallswerte
Es gibt mehrere Möglichkeiten, einen Zufallswert für die Lebenspunkte zu erzeugen, einmal mit der Methode Math.random(), und dann mit einem "richtigen" Zufallsgenerator aus der Klasse Random.
Math.random
leben = 80 + (int) (Math.random() * 20) + 1
Klasse Random
import java.util.Random // vor der Klasse
...
Random wuerfel = new Random() // in der Methode
leben = 80 + wuerfel.nextInt(20) + 1;
Leider sind die Methoden der Klasse Random nicht statisch, daher ist ein Aufruf wie bei der Klasse Math nicht möglich. Eine Anweisung wie
leben = 80 + Random.nextInt(20) + i;
würde also einen Compilerfehler liefern.
Übung 4.2.3 #2
Ergänzen Sie die Klasse Held um eine Methode zum Anzeigen der Attribute. Benutzen Sie dazu die Getter-Methoden, nicht die Instanzvariablen selbst.
Testen Sie die Klasse mithilfe der folgenden Testklasse (kopieren und in Projekt einfügen):
public class Teste
{
Held otto;
public Teste()
{
otto = new Held("Otto der Große",50,60);
otto.anzeigen();
otto.setAngriffswert(80);
otto.setVerteidigungswert(210);
otto.setLeben(150);
otto.anzeigen();
}
public static void main(String[] args)
{
new Teste();
}
}
Übung 4.2.3 #3
Teil 1
Ergänzen Sie die Klasse Held um eine Instanzvariable
private Inventar rucksack
Der neu erzeugte Rucksack sollte zunächst vollkommen leer sein.
Teil 2
Ergänzen Sie die Klasse Held dann um drei Instanzvariablen
private Gegenstand waffe1, waffe2, schild;
Im Konstruktor der Klasse Held sollen diese drei Instanzvariable zunächst auf den Wert null gesetzt werden:
waffe1 = null;
waffe2 = null;
schild = null;
Zum Aufnehmen der beiden Waffen und des Schildes schreiben Sie dann drei eigene Methoden:
public void nimmWaffe1(Gegenstand waffe)
public void nimmWaffe2(Gegenstand waffe)
public void nimmSchild(Gegenstand schild)
Innerhalb dieser drei Methoden soll über waffe.getTyp() bzw. schild.getTyp() überprüft werden, ob es sich bei den Gegenständen tatsächlich um eine Waffe bzw. einen Schild handelt. Wenn der Typ nicht passt, soll gar nichts geschehen, es wird dann keine Waffe oder kein Schild aufgenommen.
Das war es erst mal mit dem kleinen Adventure-Game. In den folgenden Abschnitten dieses Kurses werde ich gelegentlich auf diese Thematik zurückkommen. Wenn Sie Lust haben oder Ihre Programmier-Fertigkeiten üben wollen, denken Sie sich noch ein paar weitere interessante Methoden für die Klasse Held aus.
Zur Klausur
Was ist von dem Ganzen für die Klausur wichtig?
Die Klausur besteht aus zwei Teilen. Im ersten Teil kommen ein paar kleinere Aufgaben zu Fallunterscheidungen, Schleifen und Arrays, wie Sie es bereits aus den vielen Übungsaufgaben kennen.
Im zweiten Teil kommt eine größere Aufgabe, bei der Sie eine ganze Klasse erstellen müssen. Die Methoden dieser Klasse können durchaus auf Methoden einer anderen Klasse zugreifen, so ähnlich, wie wir es hier mit der Klasse Inventar und der Klasse Gegenstand geübt haben. Eine so große Klasse wie Gegenstand oder Inventar wird in der Klausur natürlich nicht vorkommen. Dort haben Sie ja auch lange nicht so viel Zeit wie in den 180 minütigen Veranstaltungen.
Es kann auch gut sein, dass Sie in der Klausur ein Materialienblatt bekommen, auf dem Sie die Spezifikation von ein oder zwei Klassen finden. Was man unter einer Spezifikation versteht, finden Sie auf der Spezialseite "Spezifikation" auf dieser Homepage. Die Aufgabe könnte dann darin bestehen, eine neue Klasse zu schreiben, die auf die Methoden der vorgegebenen Klassen zugreift. Das würde dann so ähnlich sein wie im Informatik-Abitur NRW, allerdings nicht so umfangreich, da Sie weniger Zeit haben.
Zunächst aber wollen wir erst einmal verstehen, wie ein Objekt-Array überhaupt aufgebaut ist und funktioniert.
Seitenanfang
weiter mit Objekt-Arrays ...