Letzte Änderung:
20.03.2012
Konfuzius
20.03.2012
Spruch des Tages
Nur wer mit dem Strom schwimmt, wird das Meer erreichen.Konfuzius
Prozedurale Programmierung
Prozedurale Programmierung als Oberbegriff beschreibt, wie Computerprogramme in kleinere Teilprobleme zerlegt werden. Diese Teilprobleme werden als Prozeduren bezeichnet. Der Ansatz hat das Ziel, den Quellcode einfacher, überschaubarer und wieder verwertbar zu machen. Die nun folgenden Begriffe werden in einigen Sprachen unterschiedlich definiert. Deshalb wird hier nur oberflächlich auf die allgemeinen Beschreibungen eingegangen.
(procedure = lat. voranschreiten)
Prozeduren
Prozeduren sind Unterprogramme (Subroutinen), die nicht die Möglichkeit haben, Parameter zur Abarbeitung zu empfangen, bzw. bei Beendigung der Subroutine Parameter zurückzugeben.
Schematische Darstellung:
Bekannte prozedurale Programmiersprachen:
Cobol
Pascal
C
Java
Funktionen
Funktionen verfügen nicht über das zuvor beschriebene Manko. Sie können Parameter empfangen und wieder zurückgeben.
Methoden
Funktionen und Methoden erscheinen auf den ersten Blick identisch. Der Unterschied besteht darin, dass Funktionen seiteneffektfrei sind, das heißt, wenn eine Funktion mehrfach aufgerufen wird, liefert sie immer das gleiche Ergebnis, während Methoden den Zustand des Objekts ändern können und sich somit unterschiedlich verhalten. Dieser Vergleich gilt allerdings nur, wenn Objekte sauber gekapselt werden.
Jetzt sind die Einsteiger unter Ihnen verwirrt. Deshalb können Sie als einfache Formel annehmen, dass Methoden grundsätzlich Bestandteil einer Klasse sind, während Funk-tionen auch ohne eine Objektzugehörigkeit (vereinfacht Klassenzugehörigkeit) angesprochen werden können. Wie schon geschildert, handelt es sich bei einer Methode um ein Unterprogramm. Zu Ihrer Erinnerung: ein Unterprogramm hat die Aufgabe, den Quellcode einfacher, überschaubarer und wieder verwertbar zu machen.
Betrachten Sie das folgende Beispiel einer einfachen Methode:
static int Ganzzahl_eingeben(String Text)
{
int Rueckgabewert;
System.out.printf(“%s“,Text);
Text = System.console().readLine();
Rueckgabewert = Integer.parseInt(Text);
return(Rueckgabewert);
}
Natürlich wäre diese Methode auch kürzer zu fassen gewe-sen. Aber noch ist es nicht das Ziel, Quellcode zu optimieren.
Wenn Sie die vorliegende Methode betrachten, sind drei Punkte von Bedeutung:
Der Methodenkopf zeigt die zu empfangenden Variablen
Diese Variablen werden von der rufenden Stelle übergeben. In dem vorliegenden Fall könnte der Aufruf wie folgt aussehen:
Hier sehen Sie die gleiche Signatur. In beiden Fällen handelt es sich um einen String. Zu einer Fehlermeldung würde der nachfolgende Aufruf führen:
Hier wurde eindeutig eine Ganzzahl übergeben. Somit liegt eine andere Signatur vor. Sie können Methoden mit einer beliebig großen Signatur ausstatten. Die nachfolgenden Beispiele beziehen sich nicht auf das weiter vorne vorliegende Beispiel:
x = Methode(); // keine Signatur
x = Methode(int zahl, char zeichen, byte kleineZahl);
Die Variablen in der Signatur müssen und brauchen nicht den gleichen Bezeichner zu haben, wie die Variablen an der rufenden Stelle. Aber sie müssen vom gleichen Typ sein. Wichtig dabei ist die Reihenfolge:
Aufruf:
Eine nicht passende Reihenfolge wird zu Fehlern führen. Der Gültigkeitsbereich der Variablen in der Signatur definiert sich durch den folgenden Codeblock oder vereinfacht ausgedrückt, die Variablen sind nur in der Methode gültig. Alle Variablen der Methode verlieren ihren Wert nach Beenden der Methode.
Der Methodenkopf zeigt den Rückgabewert:
Der Rückgabewert wird durch die return-Anweisung an die rufende Stelle zurückgegeben.
Dadurch ergibt sich, dass die Parameter in der Typgestaltung miteinander kommunizieren müssen. Wenn Sie das folgende Extrakt betrachten, wird Ihnen einleuchten, dass in diesem Fall nur Werte vom Typ int als Rückgabewert verwendet werden können.
Sollte einmal keine Rückgabe von Nöten sein, wird als Rückgabewert void verwendet (engl. void = null, nichtig, ungültig).
static void Methode()
Der Methodenname muss, wie eine Variable, eindeutig sein. Hier gelten dieselben Regeln wie bei der Definition von Variablen.
An dieser Stelle ein kleiner Hinweis für den Einsteiger:
static void Methode();
Ein Semikolon am Ende des Methodenkopfes führt zu einer Fehlermeldung.