Zielsetzung
In dieser Teilfolge wollen wir ein paar grundsätzliche Konzepte der OOP kennenlernen, die auch für die Klausur und das zweite Semester ganz hilfreich sein können.
Schnittstelle einer Klasse
Schnittstelle
Die Schnittstelle einer Klasse ist die sichtbare "Außenseite" einer Klasse. Sie umfasst
- die öffentlichen Methoden mit ihren Signaturen (Namen, Parametern und Rückgabetypen)
- eventuell auch öffentliche Konstanten
Wir wollen uns jetzt einmal die Schnittstelle der Klasse Gegenstand aus dem Adventure-Game anschauen.
Die Konstanten wie MIN_VERT sind alle als private deklariert, sind also nach außen hin nicht sichtbar. Daher gehören sie auch nicht in die Schnittstelle der Klasse.
Es folgt dann eine Auflistung der Signaturen der öffentlichen Methoden, einschließlich des Konstruktors:
Konstruktor
- public Gegenstand(String n, int a, int v, int g, int t, double gew)
Setter-Methoden
- public void setName(String n)
- public void setAngriffswert(int a)
- public void setVerteidigungswert(int v)
- public void setGoldwert(int g)
- public void setTyp(int t)
- public void setGewicht(double gew)
Getter-Methoden
- public String getName()
- public int getAngriffswert()
- public int getVerteidigungswert()
- public int getGoldwert()
- public int getZustand()
- public String getTypString()
- public int getTypInt()
- public double getGewicht()
Weitere Methoden
- public void beschaedigen(int prozent)
- public void reparieren()
- public void anzeigen()
Eine richtige Dokumentation ist das natürlich nicht, sondern nur ein grober Überblick, welche Methoden die Klasse anderen Klassen zur Verfügung stellt und welche Parameter diese Methoden benötigen bzw. welche Werte sie zurückliefern.
Spezifikation einer Klasse
Spezifikation einer Klasse
Die Spezifikation einer Klasse ergänzt die Schnittstelle um eine formalisierte Beschreibung des Verhaltens der öffentlichen Methoden.
Beispiele
public void setName(String n)
Legt den Namen des Gegenstandes fest. Der Name muss aus mindestens fünf Zeichen bestehen und darf höchstens 30 Zeichen umfassen.
public void setAngriffswert(int a)
Diese Methode legt den Angriffswert des Gegenstandes fest. Ist der Parameter a negativ, wird der Angriffswert auf 0 gesetzt. Ist a größer als 200, wird der Angriffswert auf 200 gesetzt.
public String getTypString()
Liefert den Typ des Gegenstandes als String zurück. Möglich sind "Waffe", "Schild", "Rüstung", "Trank", "Werkzeug" und "Sonstiges".
public int getTypInt()
Liefert den Typ des Gegenstandes als int-Wert zurück. Möglich sind 0, 1, 2, 3, 4 und 5. Dabei entspricht 0 dem Typ Waffe, 1 dem Typ Schild und so weiter.
public void beschaedigen(int prozent)
Setzt den Zustand eines Gegenstandes um den angegebenen Prozentwert zurück. Mit prozent = 30 wird beispielsweise der Zustand von 100 auf 70 verringert.
public int getAngriffswert()
Liefert den aktuellen Angriffswert des Gegenstandes zurück. Der Angriffswert hängt vom Zustand des Gegenstandes ab. Hat der Gegenstand beispielsweise einen Zustand von 70, so wird der ursprüngliche Angriffswert um 30% verringert. Hatte der Gegenstand zu Beginn einen Angriffswert von 100, so wird durch getAngriffswert() nur der Wert 70 zurückgegeben.
public void anzeigen()
Diese Methode zeigt den Namen des Gegenstandes sowie die aktuellen Werte unter Berücksichtigung des Zustandes an. Dabei wird eine formatierte Konsolen-Ausgabe verwendet; jede Eigenschaft wird in einer eigenen Zeile angezeigt.
Für die Klausur
Es kann sein, dass Sie in der Klausur die Spezifikation einer neuen oder einer bereits bekannten Klasse bekommen.
- Entweder sollen Sie diese Klasse dann entsprechend der Spezifikation implementieren,
- oder Sie sollen eine neue Klasse implementieren, die auf die Methoden der spezifizierten Klasse zugreift.
Beispiel
Sie erhalten die Spezifikation der Klasse Gegenstand und sollen dann eine Klasse Inventar schreiben, die bis zu 20 dieser Gegenstände in einem Objektarray speichert. Außerdem sollen Sie eine ausgeben()-Methode für die Klasse Inventar schreiben, die alle Gegenstände in der Konsole auflistet. Schließlich sollen sie eine getGesamtwert()-Methode schreiben, die den Gesamt-Goldwert aller enthaltenen Gegenstände zurückliefert.
Natürlich wird in der Klausur dann eine völlig andere Aufgabenstellung präsentiert, die nicht ganz so umfangreich ist wie das Adventure-Game. Schließlich haben Sie ja nur ca. 45 Minuten für die größere Aufgabe im zweiten Teil der Klausur.
Seitenanfang
weiter mit noch mehr Übungen ...