Neben den Kontrollstrukturen sind die Java-Methoden eine zentrale Einflußgröße beim Programmieren: Algorithmen, die öfter als einmal gebraucht werden, formuliert die Programmierer/in am Besten in Form einer Methode als Programm-Baustein (Methoden-Definition), der immer, wenn er gebraucht wird aufgerufen werden kann (Methoden-Aufruf), anstatt diesen Programmbaustein erneut schreiben zu müssen. Für parameterlose Methoden haben wir dies
schon gleich bei der Einführung des Konzepts der Java-Methoden ausführlich studiert (Sie erinnern sich an die Definition und den Aufruf der parameterlosen Methode gruss() !? Siehe Blogpost “Die Methode: wiederholbarer Programm-Baustein“). Siehe (http://bit.ly/2gUTI5j) Episode: “JAVA1_VORUEB_7_1_methodenintro_ILLIK”
- Gewissermassen die erste Stufe der Erleuchtung ist, erkannt zu haben, dass Methoden wiederholt eingesetzt werden können, anstatt die Codesequenz, die in der Methodendefinition notiert ist, wiederholt schreiben zu müssen.
- Die zweite Produktivitätssteigerung/zweite Stufe der Erleuchtung und Flexibilisierung ist mit dem Einsatz von Methodenpametern verbunden. Wenn wir Methoden mit Parametern definieren, können wir den Ablauf in der Methode vielfältig beeinflussen und erhalten einen noch universeller einsetzbaren Programmbaustein! Diese Parameter können wiederum Daten von allen möglichen Java-Datentpyen sein: elementare, skalare Datentypen (int, fload, double, …) bis hin zu zusammengesetzten Datentypen (Arrays, Objekte). Das Konzept der Parametrierung von Java-Methoden haben wir anhand der Methode gruss(String grussart) im Blog “Die Methode macht’s (Teil 2)” betrachtet. Die Steigerung der Flexibilität liegt auf der Hand:
- Die dritte Produktivitätssteigerung/dritte Stufe der Erleuchtung schaffen wir, wenn wir den Methoden gestatten, Return-Werte an den Aufrufer zurückzugeben: jetzt kann mit diesem Returnwert der Aufrufer flexibel auf die Ergebnisse der Methode reagieren und den, Also den Returnwert selbst, beispielsweise, für Entscheidungen heranziehen.
- Die vierte Produktivitätssteigerung/vierte Stufe der Erleuchtung ergibt sich daraus, dass der Parameterübergabe-Mechanismus von der Art/dem Typ der übergebenen Parameter abhängt: Übergabeparameter, die vom Typ her skalare Datentypen oder Strings sind, werden mit einem “call by value” übergeben. Das heist, die gerufene Methode bekommt eine Wertekopie des Aufrufparameters.
Das trifft für die Beispiel-Methode void gruss(String grussart) zu, der String grussart wird “by value” an die Methode übergeben. - Die fünfte Produktivitätssteigerung/fünfte Stufe der Erleuchtung:
Referenztypen-Übergabeparameter (Objekte und Arrays) werden mit einem “call by reference” an die Aufgerufene Methode übergeben. Das heisst im Klartext, wenn jetzt die Aufgerufene Methode das Array oder das Objekt bearbeitet, ist die Bearbeitung für den Aufrufer direkt wirksam und sichtbar. Wir hatten das an der Methode static void swap (int [] arr) studiert. - Die sechste Produktivitätssteigerung/sechste Stufe der Erleuchtung bringen die
polymorphen Methoden. Kurz gesagt, polymorphe Methoden sind Java-Methoden, mit gleichem Namen, bei denen sich aber die Methoden-Signatur in anderen Merkmalen unterscheidet (halt eben nicht im Namen, sondern vielleicht den Datentyp der formalen Parameter und/oder den Returnwert-Typ)
a) wir können Grüße in verschiedenen Sprachen ausgeben. Für den Anfang waren dafür mal die Sprachen italienisch, französisch und bayerisch vorgesehen.b) wollen wir einen Gruß mit einer weiteren Sprache implementieren: der Ort der Erweiterung – die Definition der Methode gruss(String grussart) ist der dafür prädestinierte Ort. Siehe (http://bit.ly/2hARAwl) Episode: “JAVA1_VORUEB_7_2_Methoden_mit_Param_ILLIK ”
Sie merken: Methoden machen die Programmierer/innen nicht nur produktiver, sonder wirken auch strukturierend und bringen Übersicht und Lesbarkeit in unsere Programme!
Wir schauen uns das zusammengefasst in der Episode “voruebung_Methoden_Zusammenfassung” auf Youtube an. Die Episode erscheint in Kürze.
Das File kann schon gedownloadet werden, um damit in Eclipse zu experimentieren: voruebung-methoden-parameter-zusammenfassung