1.5 Methoden

In der Regel besteht ein objektorientiertes Programm zur Laufzeit1 aus verschiedenen Objekten. Würden diese Objekte ausschließlich aus Attributen bestehen, könnten sie sich zwar Dinge merken, aber nichts tun. Ein solches Programm würde keinerlei Funktionalitäten bieten, die über das Speichern von Daten hinausgehen.

Damit ein Objekt in der Lage ist, bestimmte Aktionen auszuführen, muss es über entsprechende Methoden verfügen. Immer wenn das Programm etwas Bestimmtes tun soll, wird die entsprechende Methode des dafür zuständigen Objekts aufgerufen. Methoden sind damit für die Aktionen eines Programms zuständig.

Ein Objekt kann eigene Methoden und Methoden anderer Objekte aufrufen.

Für den Aufruf einer Methode eines anderen Objekts benötigt es dessen Objektnamen, das heißt, einen Verweis, der zu diesem Objekt führt.

Die Anweisung zum Aufruf einer Methode muss dabei selbst innerhalb des Programmcodes einer Methode stehen.

Merke: Aufruf von Methoden
Beispiel

Das UML-Klassendiagramm in Abbildung 1-10 zeigt drei Methoden der Klasse Roboter.

An den Namen einer Methode werden stets ein Paar runder Klammern angefügt.

Benötigt eine Methode zusätzliche Werte, damit sie ihre Aufgabe erfüllen kann, dann müssen beim Erstellen der Methode zwischen den beiden runden Klammern für jeden Wert ein Platzhalter (Parameter) und der jeweilige Datentyp notiert werden. Im Programmcode der Methode kann der Parameter dann als Platzhalter für die Werte verwendet werden, die zur Laufzeit des Programms beim Aufruf der Methode übergeben werden.

img/1_10_UML_Roboter.svg
Abb. 1-10: UML-Klassendiagramm – Die Klasse Roboter.

Mit Hilfe der Methode starteAufFeld(x: int, y: int, spielbrett: Spielbrett) sollen einem Objekt der Klasse Roboter sein Spielbrett und die Koordinaten seines Startfeldes mitgeteilt werden. Beim Erstellen der Methode müssen zwischen den runden Klammen für jeden Wert ein Platzhalter (Parameter) und sein Datentyp angegeben werden:

Beim Aufruf der Methode müssen die Übergabewerte dann in dieser Reihenfolge angegeben werden.

Nehmen wir an, es gibt ein Objekt der Klasse Roboter, das unter dem Objektnamen robi erreichbar ist, und ein Objekt der Klasse Spielbrett, das unter dem Objektnamen ausgewaehltesSpielbrett erreichbar ist. Dann sorgt die folgende Anweisung dafür, dass dem Objekt robi dieses Spielbrett und die Startkoordinaten (1, 2) zugewiesen werden.

JAVA

robi.starteAufFeld(1, 2, ausgewaehltesSpielbrett);

Abb. 1-10b: Aufruf der starteAufFeld-Methode des Objekts robi

Mit Hilfe der Methode istFarbeErlaubt(pFarbe: String): boolean kann ein Roboter-Objekt gefragt werden, ob der übergebene String für eine Farbe steht, die dem Roboter zugewiesen werden darf. Die Methode gibt als Antwort einen Wert vom Typ boolean zurück, das heißt, entweder den Wert true oder den Wert false.

Die folgende Anweisung sorgt dafür, dass das Objekt robi gefragt wird, ob der String "rot" für eine Farbe steht, die dem Roboter zugewiesen werden darf. Da dies der Fall ist, gibt die Methode den Wert true zurück.

JAVA

robi.istFarbeErlaubt("rot");

Abb. 1-10c: Aufruf der istFarbeErlaubt-Methode des Objekts robi

An den Namen einer Methode schließt sich stets ein Paar runder Klammern an.

Benötigt eine Methode vom Aufrufer Zusatzinformationen, können diese innerhalb der runden Klammern übergeben werden. Handelt es sich um mehrere Werte, werden diese durch Kommas voneinander getrennt. Die übergebenen Werte werden Argumente genannt.

Damit eine Methode Argumente entgegennehmen kann, muss bei ihrer Erstellung für jedes Argument, ein Parameter festgelegt werden. Dies geschieht durch Angabe eines Datentyps – nur Werte mit diesem Typ dürfen als Argumente übergeben werden – und eines Namens – dieser fungiert innerhalb des Programmcodes der Methode als Platzhalter für die zur Laufzeit übergebenen Argumente.

Merke: Methoden können die Übergabe bestimmter Werte verlangen
Frage

Fragen 1-1: Methoden

In der Klasse Roboter gibt es die Methode sag(meldung: String). Wird ein Roboter-Objekt aufgefordert diese Methode auszuführen, gibt dieses den übergebenen String in einem Fenster aus.

  1. Muss beim Aufruf der Methode ein Wert übergeben werden? Falls ja, welchen Datentyp muss dieser Wert besitzen? Lösung
    Antwort:
    Ja, der Wert muss vom Typ String sein.
  2. Gibt die Methode an den Aufrufer eine Antwort zurück? Falls ja, welchen Datentyp besitzt die Antwort? Lösung
    Antwort:
    Wenn eine Methode an den Aufrufer eine Antwort zurückgibt, dann wird im UML-Klassendiagramm im Anschluss an die schließende runde Klammer ein Doppelpunkt und der Datentyp der Antwort angehängt. Dies ist hier nicht der Fall.
  3. Wie lautet die Anweisung, mit deren Hilfe ein Roboter-Objekt mit dem Objektnamen max aufgefordert wird den Text „Ich bin bereit!” in einem Fenster auszugeben? Lösung
    Antwort:
    max.sag("Ich bin bereit!");