Einleitende Beispiele zur Deklaration von Methoden in Java
Aufrufe von Methoden der Standardbibliothek
Wir hatten schon gesehen, wie Aufrufe von Methoden, wie »java.lang.Thread.dumpStack()«, durch die Standardbibliothek festgelegt wurden.
Solche Aufrufe können im Hauptprogramm erfolgen.
Main.java
public final class Main
{public static void main( final java.lang.String[] args )
{ java.lang.Thread.dumpStack(); }}transcript
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1329)
at Main.main(Main.java:5)- Aussprache
- thread θrɛd
Methodendeklarationen
Das folgende Beispiel zeigt ein Programm mit einer Methodendeklaration und einem Aufruf.
Durch die Anweisung »lkw();« wird verlangt, daß der weiter für »lkw()« festgelegte Block »{ java.lang.System.out.print( "Lastkraftwagen" ); }« ausgeführt wird. Dies führt dann zur Ausgabe des Wortes »Lastkraftwagen«.
Schließlich wird am Ende des Hauptprogramms mit der Anweisung »java.lang.System.out.println();« noch ein Zeilenende ausgegeben. Das Programm gibt also das Wort »Lastkraftwagen« und ein Zeilenende aus.
Main.java
public final class Main
{public static void lkw(){ java.lang.System.out.print( "Lastkraftwagen" ); }
public static void main( final java.lang.String[] args )
{ lkw(); java.lang.System.out.println(); }}Protokoll
Lastkraftwagen
Das Hauptprogramm
Mit »public static void main( final java.lang.String[] args )« beginnt das Hauptprogramm. Zum Hauptprogramm gehört auch noch der darauf folgende Block.
Bei der Ausführung des Programms wird nur das gemacht, was im Hauptprogramm steht.
Wenn eine Methode nicht im Hauptprogramm aufgerufen wird, wird sie also ignoriert.
Main.java
public final class Main
{public static void lkw(){ java.lang.System.out.print( "Lastkraftwagen" ); }
public static void main( final java.lang.String[] args )
{} }Protokoll
- (keine Ausgabe)
Der Anfang des Hauptprogramms ist eine festgelegte Formulierung, die nicht verändert werden darf.
In der Zeile »public static void main( final java.lang.String[] args )« darf in diesem gesamten Kurs bei allen Übungsaufgaben nie eine Änderung vorgenommen werden. Der Inhalt jener Zeile sollte bis auf weiteres ignoriert werden.
Zentralisierung von Information
In einem guten Programm sollte jede Information nur einmal zu finden sein. In dem folgenden Programm findet sich die Information über den Text des Kehrreims des Liedes aber mehrfach (dreifach).
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{{ java.lang.System.out.println( "Auf einem Baum ein Kuckuck, -" );
{ java.lang.System.out.println( "Sim sa la dim, bam ba," );
java.lang.System.out.println( "Sa la du, sa la dim -" ); }
java.lang.System.out.println( "Auf einem Baum ein Kuckuck sass." ); }{ java.lang.System.out.println( "Da kam ein junger Jaeger, -" );
{ java.lang.System.out.println( "Sim sa la dim, bam ba," );
java.lang.System.out.println( "Sa la du, sa la dim -" ); }
java.lang.System.out.println( "Da kam ein junger Jaegersmann." ); }{ java.lang.System.out.println( "Der schoss den armen Kuckuck, -" );
{ java.lang.System.out.println( "Sim sa la dim, bam ba," );
java.lang.System.out.println( "Sa la du, sa la dim -" ); }
java.lang.System.out.println( "Der schoss den armen Kuckuck tot." ); }}}Protokoll
Auf einem Baum ein Kuckuck, -
Sim sa la dim, bam ba,
Sa la du, sa la dim -
Auf einem Baum ein Kuckuck sass.
Da kam ein junger Jaeger, -
Sim sa la dim, bam ba,
Sa la du, sa la dim -
Da kam ein junger Jaegersmann.
Der schoss den armen Kuckuck, -
Sim sa la dim, bam ba,
Sa la du, sa la dim -
Der schoss den armen Kuckuck tot.
Durch Einführung einer Methode für die Ausgabe des Kehrreimes können wir diesen zentralisieren (also auf nur eine Stelle im Quelltext einschränken).
Main.java
public final class Main
{public static void kehrreimAusgeben()
{ java.lang.System.out.println( "Sim sa la dim, bam ba," );
java.lang.System.out.println( "Sa la du, sa la dim -" ); }public static void main( final java.lang.String[] args )
{{ java.lang.System.out.println( "Auf einem Baum ein Kuckuck, -" );
kehrreimAusgeben();
java.lang.System.out.println( "Auf einem Baum ein Kuckuck sass." ); }{ java.lang.System.out.println( "Da kam ein junger Jaeger, -" );
kehrreimAusgeben();
java.lang.System.out.println( "Da kam ein junger Jaegersmann." ); }{ java.lang.System.out.println( "Der schoss den armen Kuckuck, -" );
kehrreimAusgeben();
java.lang.System.out.println( "Der schoss den armen Kuckuck tot." ); }}}Protokoll
Auf einem Baum ein Kuckuck, -
Sim sa la dim, bam ba,
Sa la du, sa la dim -
Auf einem Baum ein Kuckuck sass.
Da kam ein junger Jaeger, -
Sim sa la dim, bam ba,
Sa la du, sa la dim -
Da kam ein junger Jaegersmann.
Der schoss den armen Kuckuck, -
Sim sa la dim, bam ba,
Sa la du, sa la dim -
Der schoss den armen Kuckuck tot.
Warum Methodendeklarationen?
- Schon um das erste Programm des Kurses vollständig zu verstehen, muß man Methodendeklarationen kennen, da kein Java -Programm ohne eine Methodendeklaration auskommt.
- Java -Programme und -Bibliotheken bestehen in der Regel zum größten Teil aus Methodendeklarationen.
- Wir haben schon gesehen, daß die Dokumentation der Standardbibliothek von Java zum größten Teil Methoden beschreibt. Diese Dokumentation beschreibt mehrere zehntausend Methoden. Weitere Bibliotheken umfassen vermutlich insgesamt zirka eine Milliarde Methoden.
- Methodendeklarationen erlauben es, wie eben gezeigt, bestimmte Programmteile an einer Stelle zu zentralisieren.
- Sie erlauben es, größere Programme übersichtlich in verschiedene Methoden zu untergliedern. Benannte Methoden erlauben es, Ordnung in Programmen zu schaffen.
- Dokumentation wird meist jeweils für Methoden geschrieben. Methoden erlauben es somit, Programme zu dokumentieren.
- Tests werden ebenfalls meist jeweils für Methoden geschrieben. Methoden erlauben es somit, Programme zu testen.
- Eine Methode kann in verschiedenen Programmen verwendet werden, und erlaubt es so, Teile von Programmen in anderen Programmen wiederzuverwenden.
- Die ganze objektorientierte Programmierung basiert auf Methoden.
- In Programmierkursen können Methoden dazu verwendet werden, die Lösungen einzelner Aufgaben als eine abgegrenzte Einheit darzustellen. Dies erlaubt es, genau zu erkennen, was die Lösung sein soll, welche Daten verarbeitet werden und welches Ergebnis geliefert wird. Außerdem können Lösungen so auch automatisch als richtig oder falsch bewertet werden.
»public static void«
Eine Methodendeklaration beginnt mit »public static void«. Die Bedeutung dieser Wörter ist wie bei einer Proklamation (aus der Dokumentation): »public« besagt, daß die Methode nicht „versteckt“ werden soll (eine versteckte Methode kann nicht aus allen Teilen eines Programmes aufgerufen werden), »static« besagt, daß zum Aufruf der Methode keine Objekte benötigt werden (Objekte werden erst später behandelt) und »void« besagt, daß ein Aufruf der Methode keinen Wert hat.
Übungsfragen
? Ausgabe einer Methode
Welche Ausgabe erzeugt die Auswertung eines Aufrufs der Methode »heinrich«?
- Methodendeklaration
public static void heinrich()
{ java.lang.System.out.print( "Nordpol" ); }
? Übungsfrage
Welche Ausgabe erzeugt das folgende Programm?
Main.java
public final class Main
{public static void usw(){ java.lang.System.out.print( "und so weiter" ); }
public static void main( final java.lang.String[] args )
{ usw(); java.lang.System.out.print( ", " );
usw(); java.lang.System.out.println(); }}