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.
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.
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.
robi.starteAufFeld(1, 2, ausgewaehltesSpielbrett);
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.
robi.istFarbeErlaubt("rot");
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.
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.
-
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. -
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. -
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!");