Lernpfad:Objektorientierte Programmierung mit Java/Methoden: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Navigation}}
{{Navigation}}
== Methoden implementieren ==
Methoden in Java-Klassen bestehen aus einem '''Methodenkopf''' und einem '''Methodenrumpf'''. Der Kopf der Methode legt seine '''Signatur''' fest und der Rumpf enthält die Anweisungen.
Ein '''Methodenkopf''' hat den folgenden Aufbau:
<center>
<code>{{Farbig|Sichtbarkeit|green}} {{Farbig|Rückgabetyp|red}} {{Farbig|Bezeichner|blue}}( {{Farbig|Liste von Parametern|orange}} )</code>
</center>
Ein Beispiel für einen korrekten Methodenkopf sieht so aus:
<center>
<code>{{Farbig|public|green}} {{Farbig|void|red}} {{Farbig|meineErsteMethode|blue}}()</code>
</center>
Die {{Farbig|Liste von Parametern|orange}} kann wie im Beispiel auch leer sein, dann müssen nur die Runden Klammern (<code>()</code>) angegeben werden. Der {{Farbig|Rückgabetyp|red}} ist hier <code>void</code>, was für "nichts" steht. Die Begriffe ''Parameter'' und ''Rückgabetyp'' werden im Schritt {{Pfad|Parameter und Rückgaben}} genauer beschrieben.
Die {{Farbig|Sichtbarkeit|green}} ist im Beispiel <code>public</code>, also "öffentlich". Sie spielt erst eine Rolle, wenn in einem Programm mehrere Objekte auch unterschiedlicher Klassen beteiligt sind. Die Sichtbarkeit regelt, ob auch andere Objekte die Methode aufrufen (benutzen) dürfen. Genaueres wird im Schritt {{Pfad|Referenzen}} beschrieben.
Der '''Methodenrumpf''' ist ein ''Block'' von Anweisungen, der durch geschweifte Klammern (<code>{}</code>) gekennzeichnet wird.
<syntaxhighlight lang="java" line="1">
public void meineErsteMethode() {
    System.out.println("Hallo, Welt!");
}
</syntaxhighlight>
== Strukturierte Zerlegung ==
Methoden sind Bestandteile von Klassen, die ''aufgerufen'' werden können und eine Abfolge von Anweisungen ausführt (einen Algorithmus). Jede Methode hat einen bestimmten Zweck und kapselt eine ''Fähigkeit'' der Klasse. Jede Methode kann wiederum als Anweisung in anderen Methoden (unter bestimmten Bedingungen auch in anderen Klassen) benutzt werden. So lassen sich aus einzelnen Methoden komplexe Programme erstellen.
Auf diese Weise eignen sich Methoden vor allem, ein komplexes Problem in ''Teilprobleme'' zu zerlegen, die leichter zu lösen sind und sich zur Lösung des komplexen Problems kombinieren lassen. Man spricht dann von der [[Strukturierte Zerlegung|'''Strukturierten Zerlegung''']].
== Methoden überladen ==
== Methoden überladen ==
Beim Überladen hat man mehrere Methoden mit demselben Namen in einer Klasse, die sich alle in der Parameterliste unterscheiden. Beim Aufruf entscheidet der Interpreter anhand der Datentypen der übergebenen Werte, welche Methode ausgeführt werden muss.
Beim Überladen hat man mehrere Methoden mit demselben {{Farbig|Bezeichner|blue}} in einer Klasse, die sich alle in der {{Farbig|Parameterliste|orange}} unterscheiden. Beim Aufruf entscheidet der Interpreter anhand der Datentypen der übergebenen Werte, welche der Methoden ausgeführt werden muss.
<syntaxhighlight lang="java">
<syntaxhighlight lang="java" line=1 highlight="7-13,17-18">
public class Addierer  {
public class Addierer  {


Zeile 19: Zeile 50:
     public static void main(String[] args) {
     public static void main(String[] args) {
         Addierer a = new Addierer();
         Addierer a = new Addierer();
         System.out.println( "addiere(3, 4) = " + a.addiere(3, 4) );
         System.out.println( "addiere(3, 4, 5) = " + a.addiere(3, 4, 5) );
         System.out.println( "addiere(17, 3, 5, 8) = " + a.addiere(17, 3, 5, 8) );
         System.out.println( "addiere(17, 3, 5, 8) = " + a.addiere(17, 3, 5, 8) );


Zeile 29: Zeile 60:
{{Aufgabe:Start}}
{{Aufgabe:Start}}
# Lies den [http://openbook.rheinwerk-verlag.de/javainsel/02_007.html#u2.7.10 "Abschnitt 2.7.10 Methoden überladen"] im Onlinebuch "Java ist auch eine Insel".
# Lies den [http://openbook.rheinwerk-verlag.de/javainsel/02_007.html#u2.7.10 "Abschnitt 2.7.10 Methoden überladen"] im Onlinebuch "Java ist auch eine Insel".
# Erstellt ein kleines Beispielprojekt, an dem das Konzept "Überladen" erklärt werden kann.
# Erklärt die Aufrufreihenfolge der Methoden im Beispielprogramm oben (Klasse "Addierer").
# Erstellt ein (kleines) Beispielprojekt, an dem das Konzept "Überladen" erklärt werden kann.
{{Aufgabe:End}}
{{Aufgabe:End}}
{{Inhalt/Übersicht}}

Aktuelle Version vom 7. Februar 2022, 23:04 Uhr

Methoden implementieren

Methoden in Java-Klassen bestehen aus einem Methodenkopf und einem Methodenrumpf. Der Kopf der Methode legt seine Signatur fest und der Rumpf enthält die Anweisungen.

Ein Methodenkopf hat den folgenden Aufbau:

Sichtbarkeit Rückgabetyp Bezeichner( Liste von Parametern )

Ein Beispiel für einen korrekten Methodenkopf sieht so aus:

public void meineErsteMethode()

Die Liste von Parametern kann wie im Beispiel auch leer sein, dann müssen nur die Runden Klammern (()) angegeben werden. Der Rückgabetyp ist hier void, was für "nichts" steht. Die Begriffe Parameter und Rückgabetyp werden im Schritt Parameter und Rückgaben genauer beschrieben.

Die Sichtbarkeit ist im Beispiel public, also "öffentlich". Sie spielt erst eine Rolle, wenn in einem Programm mehrere Objekte auch unterschiedlicher Klassen beteiligt sind. Die Sichtbarkeit regelt, ob auch andere Objekte die Methode aufrufen (benutzen) dürfen. Genaueres wird im Schritt Referenzen beschrieben.

Der Methodenrumpf ist ein Block von Anweisungen, der durch geschweifte Klammern ({}) gekennzeichnet wird.

public void meineErsteMethode() {
    System.out.println("Hallo, Welt!");
}

Strukturierte Zerlegung

Methoden sind Bestandteile von Klassen, die aufgerufen werden können und eine Abfolge von Anweisungen ausführt (einen Algorithmus). Jede Methode hat einen bestimmten Zweck und kapselt eine Fähigkeit der Klasse. Jede Methode kann wiederum als Anweisung in anderen Methoden (unter bestimmten Bedingungen auch in anderen Klassen) benutzt werden. So lassen sich aus einzelnen Methoden komplexe Programme erstellen.

Auf diese Weise eignen sich Methoden vor allem, ein komplexes Problem in Teilprobleme zu zerlegen, die leichter zu lösen sind und sich zur Lösung des komplexen Problems kombinieren lassen. Man spricht dann von der Strukturierten Zerlegung.

Methoden überladen

Beim Überladen hat man mehrere Methoden mit demselben Bezeichner in einer Klasse, die sich alle in der Parameterliste unterscheiden. Beim Aufruf entscheidet der Interpreter anhand der Datentypen der übergebenen Werte, welche der Methoden ausgeführt werden muss.

public class Addierer  {

    public int addiere(int a, int b) {
        return a + b;
    }

    public int addiere(int a, int b, int c) {
        return a + b + c;
    }

    public int addiere(int a, int b, int c, int d) {
        return addiere(a,b) + addiere(c,d);
    }

    public static void main(String[] args) {
        Addierer a = new Addierer();
        System.out.println( "addiere(3, 4, 5) = " + a.addiere(3, 4, 5) );
        System.out.println( "addiere(17, 3, 5, 8) = " + a.addiere(17, 3, 5, 8) );

    }

}
Icon Heft.png
Arbeitsauftrag
  1. Lies den "Abschnitt 2.7.10 Methoden überladen" im Onlinebuch "Java ist auch eine Insel".
  2. Erklärt die Aufrufreihenfolge der Methoden im Beispielprogramm oben (Klasse "Addierer").
  3. Erstellt ein (kleines) Beispielprojekt, an dem das Konzept "Überladen" erklärt werden kann.