Methode: Unterschied zwischen den Versionen

Die Seite wurde neu angelegt: „== Einstieg == Objekte bestehen aus Attributen und Methoden. Attribute sind nur Variablen und Konstanten, die Werte aufnehmen können, und beschreiben damit den Zustand des Objektes. Im Gegensatz dazu gibt es die „Methoden“, die das dynamische Verhalten des Objektes oder einer Klasse definieren. Sie enthalten die Algorithmen eines Objektes. Methoden sind in der Ob…“
 
 
(11 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 ====
Die Sichtbarkeit gibt an, wer auf die Methode zugreifen darf.
Die Sichtbarkeit gibt an, wer auf die Methode zugreifen darf.
==== private ====
===== private =====
Die Sichtbarkeit private besagt, dass nur innerhalb einer [[Klasse]] bzw. [[Instanz]] auf eine Methode zugegriffen werden darf.
Die Sichtbarkeit private besagt, dass nur innerhalb einer [[Klasse]] bzw. [[Instanz]] auf eine Methode zugegriffen werden darf.


==== public ====
===== public =====
Die Sichtbarkeit public macht die Methode öffentlich zugänglich. Hier gibt es keine Einschränkung.
Die Sichtbarkeit public macht die Methode öffentlich zugänglich. Hier gibt es keine Einschränkung.


==== protected ====
===== protected =====
Die Sichtbarkeit protected ermöglicht den Zugriff innerhalb der [[Klasse]] selbst, aller Klassen eines [[Package|Packages]] (im [[Projekt]]) und ihrer [[Vererbung|erbenden]] Kinderklassen.
Die Sichtbarkeit protected ermöglicht den Zugriff innerhalb der [[Klasse]] selbst, aller Klassen eines [[Package|Packages]] (im [[Projekt]]) und ihrer [[Vererbung|erbenden]] Kinderklassen.


==== default ====
===== default =====
Wird keine Angabe zur Sichtbarkeit gemacht, können alle Klassen eines Packages (im [[Projekt]]) zugreifen.  
Wird keine Angabe zur Sichtbarkeit gemacht, können alle Klassen eines Packages (im [[Projekt]]) zugreifen.  


=== Signatur ===
==== Signatur ====


Eine Signatur (oder Methodensignatur) definiert in der Programmierung die Schnittstelle einer Methode. Sie besteht aus dem Typ des [[Rückgabeparameter|Rückgabewerts]], dem Namen der Methode und der Anzahl und Reihenfolge der [[Eingabeparameter]].  
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 ===
 
 
==== Methodenname ====
 
Der Methodenname ist freiwählbar. In der objektorientierten Softwareentwicklung ist es üblich Methodennamen mit einem Verb zu benennen. Hierdurch wird deutlich, dass die Methode Verhalten repräsentiert. So ist der Quelltext leichter zu lesen und zu verstehen.
==== Parameter ====
===== Rückgabeparameter =====


Der Rückgabeparameter definiert den (Daten)-Typen möglicher Ergebnisse dieser Methode. Das Ergebnis wird aus dem [[Körper]] der Methode mittels eines  return-Befehls (return) zurückgegeben. Möglich sind [[Primitive Datentypen|primitive Datentypen]] wie Integer, Double oder Boolean aber auch [[Komplexe Datentypen|komplexe Datentypen]]. Komplexe Datentypen könne ein beliebige [[Klassen]] sein wie z.B. Mitarbeiter.
Der Rückgabeparameter definiert den (Daten)-Typen möglicher Ergebnisse dieser Methode. Das Ergebnis wird aus dem [[Körper]] der Methode mittels eines  return-Befehls (return) zurückgegeben. Möglich sind [[Primitive Datentypen|primitive Datentypen]] wie Integer, Double oder Boolean aber auch [[Komplexe Datentypen|komplexe Datentypen]]. Komplexe Datentypen könne ein beliebige [[Klassen]] sein wie z.B. Mitarbeiter.
Zeile 37: Zeile 43:
Soll ein Methode kein Ergebnis liefern muss das Schlüsselwort ''void'' geschrieben werden.  
Soll ein Methode kein Ergebnis liefern muss das Schlüsselwort ''void'' geschrieben werden.  


=== Methodenname ===
===== Eingabeparameter =====


Der Methodenname ist freiwählbar. In der objektorientierten Softwareentwicklung ist es üblich Methodennamen mit einem Verb zu benennen. Hierdurch wird deutlich, dass die Methode Verhalten repräsentiert. So ist der Quelltext leichter zu lesen und zu verstehen.
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.


=== Eingabeparameter ===
=== 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 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.
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 ==
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 in der Signatur 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 94:
<syntaxhighlight lang="Java">
<syntaxhighlight lang="Java">
public String getName(){
public String getName(){
 
    return name;
        return name;
}
 
</syntaxhighlight>
    }}</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 128:
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 184:


== 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]]