Java Schnellstart – Methoden
Ein sehr wichtiges Konzept der Programmierung sind Methoden. Egal in welcher Programmiersprache, Methoden sind ein fester Bestandteil, der dir viel Arbeit abnimmt.
Wofür brauchen wir Methoden? Ein Roboter-Beispiel
In den Kinderschuhen der Programmierung kannte man noch keine "Methoden". Man arbeitete mit vordefinierte Anweisungen (Befehlen), die einem Programmierer zur Verfügung standen. Den Code musste man so schreiben, dass die Befehle von oben nach unten abgearbeitet wurden.
Stell dir vor, dass ein Roboter nur die Anweisungen "vorwärts" und "linksDrehen" kennt. Das Ziel ist es, dass der Roboter sich einmal im Kreis dreht.
Der Roboter soll also folgende Bewegung durchführen:

Doch was passiert, wenn sich der Roboter nach rechts drehen soll? Die Funktionalität "rechtsDrehen" steht uns nicht zur Verfügung. Hier müssen wir uns etwas einfallen lassen.
Wir könnten uns, zur Lösung dieses Problems, dreimal nach links drehen. Damit haben wir uns, relativ gesehen, einmal nach rechts gedreht. Im Code würde das bspw. wie folgt aussehen:
// Code für Roboter Tom
tom.vorwärts;
tom.linksDrehen;
tom.linksDrehen;
tom.linksDrehen;
tom.vorwärts;
tom.linksDrehen;
tom.linksDrehen;
tom.linksDrehen;
tom.vorwärts;
tom.linksDrehen;
tom.linksDrehen;
tom.linksDrehen;
Wie du siehst, haben wir die obigen Befehle mehrfach wiederholt, um zur Lösung zu kommen. Jedoch ist diese Art der Programmierung nicht flexibel (bzw. modular). Sobald in der Zukunft eine Änderung z.B. an der Bewegung von Tom gemacht werden soll, musst du sämtliche Befehle manuell abändern. Das kostet viel Zeit und ist fehleranfällig. Um unseren Code eleganter und modular zu gestalten, können wir die sogenannten "Methoden" benutzen.
Was sind Methoden?
Eine Methode ist eine Befehlsabfolge (mehrere Befehle), die nur ausgeführt wird, wenn sie aufgerufen wird. Methoden werden verwendet, um bestimmte Aktionen auszuführen. In anderen Programmiersprachen werden sie auch Funktionen genannt. Du kannst verschiedenste Daten (sogenannte Parameter) an eine Methode/Funktion übergeben.
- Methoden werden eingesetzt, um Code wiederzuverwenden.
- Du schreibst den Code einmal und kannst ihn beliebig oft wiederverwenden.
In Bezug auf unser Roboter-Beispiel können wir z.B. die Anweisung:
- linksDrehen
- linksDrehen
- linksDrehen
zu einer rechtsDrehen Methode zusammenfassen:
Im Code sieht das wie folgt aus:
public static void Main(String[] args) {
Roboter tom = new Roboter();
tom.vor();
rechtsDrehen(tom);
tom.vor();
rechtsDrehen(tom);
tom.vor();
rechtsDrehen(tom);
}
public static void rechtsDrehen(Roboter robot) {
robot.linksDrehen();
robot.linksDrehen();
robot.linksDrehen();
}
Schauen wir uns die Methode rechtsDrehen (ab Zeile 11) genauer an:
- public static sind zwei Zugriffsmodifizierer
- void ist ein Rückgabetyp - in diesem Fall ein spezieller, weil void eigentlich angibt, dass wir keinen Wert zurückgegeben
- rechtsDrehen ist unser Methodenbezeichner
- Roboter robot, welcher in den Klammern steht, ist ein sogenannter Parameter
- Danach kommt unser Methodenkörper (innerhalb der geschweiften Klammern), nämlich der dreifache linksDrehen-Befehl
Ein Zugriffsmodifizierer gibt an, wie wir auf eine Methode zugreifen können. In der Main-Methode siehst du zum Beispiel, dass wir auf die Methode vor() oder linksDrehen() nur über eine Variable (tom bzw. robot) zugreifen können.
Die Methode rechtsDrehen() können wir aber direkt ausführen. Da wir unsere Methode mit dem Schlüsselwort static gekennzeichnet haben. Das Schlüsselwort public gibt an, dass wir überall im Code auf die Methode zugreifen können (z.B. von anderen Klassen). Rückgabetypen werden wir im nächsten Artikel weiter vertieft. Kurz gesagt kann eine Methode nicht nur Code ausführen, sondern auch Werte zurückgegeben. Du könntest zum Beispiel eine Methode schreiben, welche dir das aktuelle Wetter in Berlin als Zahl zurückgibt. Dann benötigst du als Rückgabetyp zum Beispiel int.
Dafür könntest du folgenden Code schreiben:
int temperaturBerlin = getTemperaturBerlin();
Der Methodenbezeichner ist eine Bezeichnung für eine Methode und darf keine Leerzeichen enthalten. Mit diesem Bezeichner können wir später in anderen Methoden wie zum Beispiel der Main-Methode unseren Code Methode aufrufen und ausführen lassen.
Oftmals ist es so, dass Methoden eine bestimmte Eingabe brauchen. Eine Methode zum Addieren von zwei Zahlen braucht zum Beispiel zwei Zahlen. Unsere rechtsDrehen() Methode benötigt dagegen einen Roboter, welcher gedreht werden soll. In unserer Main-Methode übergeben wir dann "Tom". Wir könnten aber auch einen zweiten Roboter "Lisa" erstellen und diesen übergeben. Dann würde die Methode "Lisa" nach rechts drehen. Auf Parameter werden wir im nächsten Artikel noch mal genauer eingehen.
In den Methodenkörper kommen dann die Anweisungen oder andere Methodenaufrufe, welche deine Methode ausführen soll.
Hinweis: Es empfiehlt sich, deinen Code in möglichst viele kompakte Methoden aufzuteilen. Dadurch erhältst du eine gute Struktur und dein Code wird übersichtlicher. Grundsätzlich gilt, dass deine Methoden mehr als eine Zeile Code im Methodenkörper haben, da du den Befehl sonst auch direkt aufrufen könntest.
Code-Aufgabe: Code eine "Roboter-Umdrehen"-Methode
- Erweitere den Code um die Methode "Umdrehen", welche einen Roboter um 180° dreht. Tipp: Der Roboter muss sich 2x nach links drehen, damit er sich um 180° gedreht hat.
- Führe die Umdrehen-Methode zweimal (2x) für Roboter Tom und einmal (1x) für Roboter Lisa aus.
[lp_spoiler title="Lösung anzeigen" class="da"]
Eine mögliche Lösung sieht folgendermaßen aus:
class Main {
public static void main(String[] args) {
Roboter tom = new Roboter();
Roboter lisa = new Roboter();
// Aufgabe 2 Lösung - Tom 2x drehen, Lisa 1x drehen
umdrehen(tom);
umdrehen(tom);
umdrehen(lisa);
}
// Aufgabe 1 Lösung - Umdrehen-Methode erstellen
public static void umdrehen(Roboter robot)
{
robot.linksDrehen();
robot.linksDrehen();
}
}
Als Ausgabe erhältst du Folgendes:
[/lp_spoiler]
Fazit
Nach dieser Lektion solltest du in der Lage sein, einfache eigene Methode zu schreiben.
Wenn du die Konzepte des Zugriffsmodifizierers noch nicht ganz verstanden hast, ist das kein Problem. Klarer wird das Ganze, wenn du dich später mit der Objektorientierung beschäftigst. In der nächsten Lektion lernst du zunächst, wie du Methoden mit Rückgabetypen (außer void) definieren kannst. Außerdem lernst du Parameter und deren Funktion kennen.