4.5 Methoden in eigenen Klassen
Bisher haben wir nur zwei Arten von Methoden selbst programmiert, nämlich, nämlich Konstruktoren und Aufträge ohne Parameter. Es gibt aber noch viele weitere Arten von Methoden, wie die folgende Übersicht zeigt.
Methoden sind dabei immer nach dem gleichen Muster aufgebaut: Zu Beginn steht der Sichtbarkeitsmodifizierer, gefolgt von dem Rückgabetyp. Daran schließt sich der Methodenname an. Abgeschlossen wird eine Methode von runden Klammern, in denen Parameter stehen können.
Einzige Ausnahme ist der Konstruktor: Er hat keinen Rückgabetyp, so dass nach dem Sichtbarkeitsmodifizierer direkt der Methodenname kommt.
sichtbarkeitsmodifizierer rückgabetyp methodenname ( parameter )
Methode ohne Rückgabe: Auftrag
Bei Aufträgen gibt es keine Rückgabe. Daher folgt nach dem Sichtbarkeitsmodifizierer das Schlüsselwort void
. Im UML-Diagramm kann die Rückgabe je nach Belieben weggelassen oder dazugeschrieben werden.
ohne Parameter
UML-Diagramm (beides möglich):+ wuerfleAlleWuerfel()
+ wuerfleAlleWuerfel() : void
Java-Code:
public void wuerfleAlleWuerfel() {
for(int i = 0; i < wuerfel.length; i++) {
wuerfel[i].wuerfle();
}
}
mit Parameter
UML-Diagramm (beides möglich):+ wuerfleEinenWuerfel(pNr : int)
+ wuerfleEinenWuerfel(pNr : int) : void
Java-Code:
public void wuerfleEinenWuerfel(int pNr) {
wuerfel[pNr].wuerfle();
}
Methode mit Rückgabe: Anfrage
Bei Anfragen wird nach dem Sichtbarkeitsmodifzierer angegeben, welchen Datentypen der Wert hat, der zurückgegeben wird, also z.B. int
, boolean
, double
. In der Methode wird dann das Schlüsselwort return
genutzt, um einen Wert zurückzugeben. Häufig wird in der Methode eine Variable genutzt, deren Wert im Verlauf berechnet und dann zurückgegeben wird.
ohne Parameter
UML-Diagramm:+ gibSumme() : int
Java-Code:
public int gibSumme() {
int summe = 0;
// ...
return summe;
}
mit Parameter
UML-Diagramm:+ wurdeGeworfen(pAugenzahl : int) : boolean
Java-Code:
public boolean wurdeGeworfen(int pAugenzahl) {
boolean geworfen = false;
// ...
return geworfen;
}
Kommunikation zwischen Objekten mit Methoden
Sobald man mehrere Klassen verwendet, benötigt man Methoden auch für die Kommunikation zwischen den Objekten. Das folgende UML-Diagramm zeigt die Beziehungen zwischen der Klasse Wuerfelsimulation
und der Klasse Wuerfel
. Der Pfeil zeigt, dass die Klasse Wuerfelsimulation
ein Array von Objekten der Klasse Wuerfel
mit dem Namen wuerfel
hat.

Wenn nun die Methode wuerfelAlleWuerfel
eines Wuerfelsimualtion
-Objekts aufgerufen wird, muss das Würfel-Array durchlaufen und für jeden Würfel die Methode wuerfleMich
aufgerufen werden. Da die Methode wuerfleMich
öffentlich (public
) ist, kann sie aus Methoden der Klasse Wuerfelsimulation
heraus aufgerufen werden.
Bei den anderen Methoden gibt es allerdings ein Problem. Wenn beispielsweise für die Methode gibSumme
die Augenzahl der Würfel benötigt wird, scheitert dies daran, dass das Attribut augenzahl
dem Geheimnisprinzip folgend als private
deklariert wurde. Aus der Klasse Wuerfelsimulation
heraus besteht hierauf kein Zugriff.

Daher ist eine zusätzliche Methode gibAugenzahl
in der Klasse Wuerfel
nötig. Mit dieser Methode kann der Wert der Variablen augenzahl
abgefragt werden. Diese Methode ist speziell dem Attribut augenzahl
zugeordnet und wird auch Getter genannt. Ebenso gibt es Setter, mit denen der Wert eines Attributs von außen gesetzt werden kann.
public int gibAugenzahl() {
return augenzahl;
}
Da in dem Projekt Würfelsimulation nur ein Getter für das Attribut augenzahl benötigt wird, werden Getter und Setter noch einmal zu einem späteren Zeitpunkt aufgegriffen.
Aufgabe
Öffne das Projekt Würfelsimulation erneut. Implementiere zuerst den Getter zum Attribut augenzahl
.
Füge dann in der Klasse Wuerfelsimulation
die fehlenden Methoden aus dem obigen UML-Diagramm hinzu, und zwar in der folgenden Reihenfolge:
gibSumme
gibHoechstesErgebnis
wurdeGeworfen
gibAnzahlWuerfel
Du kannst dich an den nebenstehenden Struktogrammen orientieren.