Methode: Unterschied zwischen den Versionen
Thomas (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (9 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 7: | Zeile 7: | ||
== Syntax == | == Syntax == | ||
Eine Methode muss im [[Körper]] einer [[Klasse]] stehen und besteht aus einem [[Kopf]] und einem Körper. Der Kopf besteht aus der [[Sichtbarkeit]] und einer [[Signatur]]. Die Signatur besteht aus einem [[Rückgabeparameter]], dem Methodennamen und [[Eingabeparametern]]. Die Reihenfolge dieser Elemente ist für den [[Compiler]] entscheidend. | Eine Methode muss im [[Körper]] einer [[Klasse]] stehen und besteht aus einem [[Kopf]] und einem Körper. Der Kopf besteht aus der [[Sichtbarkeit]] und einer [[Methodensignatur|Signatur]]. Die Signatur besteht aus einem [[Rückgabeparameter]], dem Methodennamen und [[Eingabeparametern]]. Die Reihenfolge dieser Elemente ist für den [[Compiler]] entscheidend. | ||
[[Datei:Mindmap Aufbau Methoden.jpg|mini]] | [[Datei:Mindmap Aufbau Methoden.jpg|mini]] | ||
=== Kopf === | === Kopf === | ||
Der Kopf einer Methode besteht aus der [[Sichtbarkeit]] und der [[Signatur]]. | Der Kopf einer Methode besteht aus der [[Sichtbarkeit]] und der [[Methodensignatur|Signatur]] plus Rückgabeparameter. | ||
==== Sichtbarkeit ==== | ==== Sichtbarkeit ==== | ||
| Zeile 29: | Zeile 29: | ||
==== Signatur ==== | ==== Signatur ==== | ||
Eine Signatur (oder Methodensignatur) definiert in der Programmierung die Schnittstelle einer Methode. Sie besteht aus | Eine [[Methodensignatur|Signatur]](oder Methodensignatur) definiert in der Programmierung die Schnittstelle einer Methode. Sie besteht aus dem Namen der Methode und der Anzahl und Reihenfolge der [[Eingabeparameter]]. | ||
==== Rückgabeparameter ==== | ==== Rückgabeparameter ==== | ||
| Zeile 43: | Zeile 43: | ||
==== Eingabeparameter ==== | ==== Eingabeparameter ==== | ||
Um eine Methode flexibel und wieder verwendbar zu gestalten, können von außen Werte an Variablen übergeben werden. Diese Variablen nennt man [[Eingabeparameter]]. Möglich sind 0 bis N Variablen. Jede Variable muss [[Deklaration|deklariert]] werden; benötigt also einen [[Datentyp]] und einen Namen. Die einzelnen Variablen werden durch Kommas getrennt. Die gesamte Eingabeparameterliste wird in runde Klammern geschrieben (), egal ob sie null oder n Parameter enthält. Wie beim Rückgabeparameter können primitive und komplexe Datentypen vergeben werden. | Um eine Methode flexibel und wieder verwendbar zu gestalten, können von außen Werte an Variablen übergeben werden. Diese Variablen nennt man [[Eingabeparameter]]. Möglich sind 0 bis N Variablen. Jede Variable muss [[Deklaration|deklariert]] werden; benötigt also einen [[Datentyp]] und einen Namen. Die einzelnen Variablen werden durch Kommas getrennt. Die gesamte Eingabeparameterliste wird in runde Klammern geschrieben (), egal ob sie null oder n Parameter enthält. Wie beim Rückgabeparameter können primitive und komplexe Datentypen vergeben werden. | ||
=== Körper === | === Körper === | ||
Der Körper einer Methode folgt auf den Kopf und wird in geschweiften Klammern geschrieben {}. Im Körper - also innerhalb der geschweiften Klammern - kann ein beliebiger [[Algorithmus]] stehen. Wurde | Der Körper einer Methode folgt auf den Kopf und wird in geschweiften Klammern geschrieben {}. Im Körper - also innerhalb der geschweiften Klammern - kann ein beliebiger [[Algorithmus]] stehen. Wurde im Kopf ein Rückgabeparameter definiert (also nicht ''void''), dann muss in jedem Fall ein zum Datentyp des Rückgabeparameters kompatible Rückgabe erfolgen. Die Rückgabe wird im Körper durch das Schlüsselwort ''return'' kenntlich gemacht. | ||
Der [[Algorithmus]] einer Methoden wird durch [[Kontrollstruktur|Kontrollstrukturen]], Ausdrücke und Operanden definiert. | Der [[Algorithmus]] einer Methoden wird durch [[Kontrollstruktur|Kontrollstrukturen]], Ausdrücke und Operanden definiert. | ||
| Zeile 92: | Zeile 92: | ||
<syntaxhighlight lang="Java"> | <syntaxhighlight lang="Java"> | ||
public String getName(){ | public String getName(){ | ||
return name; | |||
} | |||
</syntaxhighlight> | |||
Diese Methode ist öffentlich zugänglich (public). Sie liefert ein Ergebnis vom Typ String. Daher muss auch im Körper der Methode ein return-Befehl stehen. Der Name der Methode lautet "getName". Get steht für gib und ist ein Verb. Die Eingabeparameter stehen in runden Klammern(). Hier gibt es keine Eingabeparameter, da nur der Werte der Instanzvariablen name zurückgegebenwerden soll. | Diese Methode ist öffentlich zugänglich (public). Sie liefert ein Ergebnis vom Typ String. Daher muss auch im Körper der Methode ein return-Befehl stehen. Der Name der Methode lautet "getName". Get steht für gib und ist ein Verb. Die Eingabeparameter stehen in runden Klammern(). Hier gibt es keine Eingabeparameter, da nur der Werte der Instanzvariablen name zurückgegebenwerden soll. | ||
| Zeile 127: | Zeile 126: | ||
Beim Methodenaufruf wird die speziellste passende Methode ausgeführt. D.h. es wird automatisch die Methode ausgewählt, für die am wenigsten Parameter implizit in andere Datentypen konvertiert werden müssen. Diese Auswahl muss eindeutig sein. | Beim Methodenaufruf wird die speziellste passende Methode ausgeführt. D.h. es wird automatisch die Methode ausgewählt, für die am wenigsten Parameter implizit in andere Datentypen konvertiert werden müssen. Diese Auswahl muss eindeutig sein. | ||
Die folgenden Methoden ermitteln das Minimum einer Eingabeparameterliste. Methode 3 wird einen Compilerfehler auslösen, da sich die Signatur nur durch den Rückgabeparameter unterscheidet. Dies ist nicht ausreichend, um einer Methode zu überladen. | Die folgenden Methoden ermitteln das Minimum einer Eingabeparameterliste. Methode 3 wird einen Compilerfehler auslösen, da sich die [[Methodensignatur|Signatur]] nur durch den Rückgabeparameter unterscheidet. Dies ist nicht ausreichend, um einer Methode zu überladen. | ||
<syntaxhighlight lang="Java"> | <syntaxhighlight lang="Java"> | ||
public class Berchnung | public class Berchnung | ||
| Zeile 183: | Zeile 182: | ||
== Polymorphie == | == Polymorphie == | ||
Polymorphie bedeutet "Vielgestaltigkeit." Im Bereich der [[Objektorientierung]] bezieht sich Polymorphie darauf, dass verschiedene [[Objekt|Objekte]] bei Aufruf derselben Methode unterschiedliches Verhalten an den Tag legen können. | [[Polymorphie]] bedeutet "Vielgestaltigkeit." Im Bereich der [[Objektorientierung]] bezieht sich Polymorphie darauf, dass verschiedene [[Objekt|Objekte]] bei Aufruf derselben Methode unterschiedliches Verhalten an den Tag legen können. | ||
[[Kategorie:Programmierung]] | |||
[[Kategorie:AHR_I_Informatik_LK]] | |||
[[Kategorie:FI_I_SDM]] | |||
[[Kategorie:FI_I_TP1]] | |||