Kontakt aufnehmen

Java: Funktionen

Funktionen dienen dazu, das Programm übersichtlich zu gestalten. Sie bezeichnen Anweisungsblöcke, die unter dem Funktionsnamen aufgerufen werden können. An Funktionen können Argumente übergeben werden und Funktionen können einen Ergebniswert zurückgeben.
In jeder höheren Programmiersprache gibt es die Möglichkeit, den Programmtext zu gliedern und zu strukturieren. Das ist aus 2 Gründen sinnvoll: einmal, um die Übersichtlichkeit für den Programmierer zu bewahren, zum anderen, damit Anweisungsblöcke, die mehrfach aufgerufen werden sollen, nur einmal geschrieben werden müssen. Dazu gibt es gibt es Unterprogramme. Ein Hauptprogramm ruft mehrere Unterprogramme auf, jedes Unterprogramm kann wieder Unterprogramme aufrufen. Man kann sich das vorstellen wie die Kapitel eines Buches. Das Hauptprogramm ist das Inhaltsverzeichnis. Dort stehen nur die "Kapitelüberschriften":

do
{
  LaufeZu (Autos);
  for (AutoGenommen = 0; AutoGenommen < 3; AutosGenommen++)
    NimmAuto;
  LaufeZu (Schachteln);
  SuchePassendeSchachtel;
  PackeAutosInSchachtel;

} while (AutosSindNochNichtVerpackt);

Jede Zeile (außer do und die geschweiften Klammern) ist hier der Name eines Unterprogramms. Er steht stellvertretend für eine oder mehrere Anweisungen. Welche das sind, muss an anderer Stelle "definiert" sein, z.B:

void PackeAutosInSchachtel ()
{
  OeffneSchachtel;
  for (AutoEingepackt = 0; AutoEingepackt < 3; AutoEingepackt++)
    SchiebeAutoInSchachtel;
  SchliesseSchachtel;
}

In unserem Beispiel ist OeffneSchachtel wiederum ein Unterprogramm, das so definiert sein könnte:

void OeffneSchachtel ()
{
  GreifeDeckel;
  BewegeHandNach("Oben");
  LassDeckelLos;
}

Unterprogramme gibt es in jeder höheren Programmiersprache. In Java heissen sie Methoden bzw. Funktionen. Das klassische Beispiel für Funktionen sind Berechnungen:

x = Multipliziere (2, 3); // Das ist ein Funktionsaufruf.

Die Funktion dazu ist an anderer Stelle definiert und könnte so aussehen:

public int Multipliziere (int wert1, int wert2)
{
  x = wert1 * wert2;
  return x;
}

x wird als 2 * 3 ausgerechnet und der Wert 6 mit return zurückgegeben. An die Funktion werden hier 2 Werte übergeben, sie heissen Argumente oder Parameter. Wenn man andere Parameter übergibt, erhält man einen anderen Rückgabewert:

x = Multipliziere (5, 4);  // x erhält den Wert 20

Rückgabewerte

Rückgabewerte von Funktionen unterliegen grundsätzlich den gleichen Konventionen wie Variablen. Nun gibt es allerdings Methoden, die keinen Rückgabewert haben sollen. Für sie hat Java aus C++ die Bezeichnung void übernommen. Wir haben sie schon in verschiedenen Beispielen gesehen:

public void main(...)

Vorsicht beim Mischen von verschiedenen Datentypen. Wenn man in einer Anweisung verschiedene Datentypen (als Variablen, Werte oder Rückgabewerte von Funktionen) miteinander vermischt, versucht Java , sie zu einem Ergebnis-Datentyp umzuwandeln, zu vereinheitlichen. Diesen Vorgang nennt man in Java das "Casten". Java hält sich dabei an bestimmte Regeln. Wer sie nicht beachtet, kann böse Überraschungen erleben, was aus seinen Werten wird. Der Typ des Rückgabewerts wird dabei bei der Funktionsdeklaration vor den Namen notiert (hier int) - gleiches gilt für Parameter/Argumente. Manche Funktionen geben keinen Wert zurück, und an manche Funktionen werden auch keine Werte übergeben: OeffneSchachtel ist z.B. eine Prozedur - eine Methode, die ausgeführt wird, ohne Werte zurückzugeben.
In unserem Roboter-Beispielprogramm lassen sich viele Methoden vorstellen, an die Argumente übergeben werden. Je nach den Argumenten tun die Methoden dann etwas unteschiedliches:

BewegeHandNach("Oben");
BewegeHandNach("Unten");
LaufeZu ("Autos");
LaufeZu ("Schachteln");

Die bisher beschriebenen Funktionen und Prozeduren sind alle selbst "erfunden". Man muss sie definieren (also die Anweisungen aufschreiben, die ausgeführt werden sollen, wenn die jeweilige Funktion oder Prozedur aufgerufen wird). Es gibt aber auch fertig vorprogrammierte Funktionen und Prozeduren, die Java schon kennt. Man kann sie sofort aufrufen. Im übrigen funktionieren sie genauso wie selbst geschriebene.

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Weiterlesen: ⯈ Abfragen / Verzweigungen

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern