Lernpfad:Objektorientierte Programmierung mit Java/Parameter und Rückgaben: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 5: Zeile 5:


== Parameter ==
== Parameter ==
 
Damit man nicht für alle möglichen Quadrate eigene Methoden schreiben muss (was ja gar nicht möglich ist, da es theoretisch unendlich viele Quadrate gibt), kann man der Methode mit einem '''Parameter''' sagen, wie groß das Quadrat werden soll.  
Damit man nicht für alle möglichen Quadrate eigene Methoden schrieben muss (was ja gar nicht möglich ist, da es theoretisch unendlich viele Quadrate gibt), kann man der Methode mit einem '''Parameter''' sagen, wie groß das Quadrat werden soll.  


<center><code>public void zeichneQuadrat( {{Farbig|double pKantenlaenge|orange}} )</code></center>
<center><code>public void zeichneQuadrat( {{Farbig|double pKantenlaenge|orange}} )</code></center>
Zeile 20: Zeile 19:
{{Kasten|Fur die Bezeichner von Parametern gelten dieselben Vorgaben wie für die von Variablen und Methoden. Um sie leichter von ''lokalen Variablen'' innerhalb des Methodenrumpfes unterscheiden zu können benutzt man häufig ein kleines "p" als Prefix. Dies ist aber nur eine Absprache unter Entwicklern, im den Quellcode besser lesbar zu machen. Man könnte als Bezeichner auch <code>xTezU</code> oder sonst einen Unsinn benutzen.|Farbe={{Farbe:Info}}}}
{{Kasten|Fur die Bezeichner von Parametern gelten dieselben Vorgaben wie für die von Variablen und Methoden. Um sie leichter von ''lokalen Variablen'' innerhalb des Methodenrumpfes unterscheiden zu können benutzt man häufig ein kleines "p" als Prefix. Dies ist aber nur eine Absprache unter Entwicklern, im den Quellcode besser lesbar zu machen. Man könnte als Bezeichner auch <code>xTezU</code> oder sonst einen Unsinn benutzen.|Farbe={{Farbe:Info}}}}


== Rückgaben ==
== Rückgabetypen ==
Mit Parametern kannst du "etwas in die Methode hineingeben" und so die Ausführung des Algorithmus beeinflussen (abhängig von der Eingabe machen). Umgekehrt kannst du auch "etwas aus der Methode herausgeben" und für weitere Verarbeitungen nutzen. Die Methode hat dann eine ''Rückgabe'' von einem bestimmten ''Rückgabetyp''.
Mit Parametern kannst du "etwas in die Methode hineingeben" und so die Ausführung des Algorithmus beeinflussen (abhängig von der Eingabe machen). Umgekehrt kannst du auch "etwas aus der Methode herausgeben" und für weitere Verarbeitungen nutzen. Die Methode hat dann eine ''Rückgabe'' von einem bestimmten ''Rückgabetyp''.


Hat eine Methode keine Rückgabe, dann wird als Rückgabetyp <code>void</code> angegeben.  
Hat eine Methode keine Rückgabe, dann wird als Rückgabetyp <code>void</code> angegeben.  
<syntaxhighlight lang="java">
public void einAuftrag()
</syntaxhighlight>
{{Info:Start}}
{{Info:Start}}
Wir nennen Methoden ohne Rückgabe '''Aufträge''', da sie den Auftrag haben einen Algorithmus auszuführen. Methoden mit Rückgabe nennen wir '''Anfragen''', da der Aufrufende erwartet eine bestimmte Antwort zu bekommen.  
Wir nennen Methoden ohne Rückgabe '''Aufträge''', da sie den Auftrag haben einen Algorithmus auszuführen. Methoden mit Rückgabe nennen wir '''Anfragen''', da der Aufrufende erwartet eine bestimmte Antwort zu bekommen.  
{{Info:End}}
{{Info:End}}
Bei Methode mit Rückgabe wird statt <code>void</code> der {{Pfad|Datentypen und Variablen|Datentyp}} des Rückgabewertes angegeben.
<syntaxhighlight lang="java">
public int eineAnfrage()
</syntaxhighlight>
{{Hinweis|Wie du siehst kann nur genau ein Rückgabetyp notiert werden. Auch wenn Methoden mehrere Parameter haben dürfen, können sie maximal einen Rückgabewert zurückgeben.}}
== Rückgaben implementieren ==
Hast du im Methodenkopf den passenden Rückgabetyp angegeben und die Methode so als ''Anfrage'' markiert, dann muss innerhalb der Methode nur noch der passende Wert zurückgegeben werden.
Dazu gibt es das Schlüsselwort <code>return</code>.
<syntaxhighlight lang="java">
public int gibVier() {
  return 4;
}
</syntaxhighlight>
Jede Anfrage '''muss''' mit einem <code>return</code> enden, das einen Wert des passenden Rückgabetyps zurückgibt. Das bedeutet auch, dass bei bedingten Anweisungen (if-Anweisungen) beide Alternativen am Ende zu einem <code>return</code> führen müssen.
<syntaxhighlight lang="java">
public boolean istKleinerAlsVier( int pZahl ) {
  if( pZahl < 4 ) {
    return true;
  } else {
    return false;
  }
}
</syntaxhighlight>
{{Rahmen|
Die Methode aus dem letzten Beispiel kannst du auch ohne Bedingte Anweisung schreiben. Der Vergleich <code>pZahl < 4</code> ergibt einen Wahrheitswert (<code>boolean</code>). Ist dieser Wert <code>true</code>, dann wird <code>true</code> zurückgegeben. Ist er <code>false</code>, dann wird <code>false</code> zurückgegeben. Also könntest du auch direkt das Ergebnis des Vergleichs zurückgeben:
<syntaxhighlight lang="java">
public boolean istKleinerAlsVier( int pZahl ) {
  return pZahl < 4;
}
</syntaxhighlight>
}}


== Aufrufarten bei Paramteren ==
== Aufrufarten bei Paramteren ==