Prüfungsnachlese: Java und die formalen Parameter
Vorbemerkung: Der folgende Beitrag entspricht einer inzwischen langjährigen Tradition, nach der Korrektur einer Prüfung über einige Antworten zu berichten, die mich als Aufgabensteller und Korrektor zum Schmunzeln oder zum Nachdenken bewegt haben. Betrachtet man die Stilblüten, von gestressten Prüflingen in ihrer Pein zu Papier gebracht, stets hoffend, dass darin doch vielleicht doch noch etwas Sinnhaftes und Punktehaltiges enthalten sein könnte, dann kann man daraus auch als Aufgabensteller noch etwas lernen. Zum Beispiel, dass dieser Stoff beim nächsten Mal noch etwas verständlicher erklärt werden muss. Also: Niemand wird hier vorgeführt oder bloßgestellt!
In der Prüfung ging es dieses Mal auch um den Begriff und die Bedeutung von Parametern bei der Definition von Methoden. Zur Erläuterung: In der Programmierung unterscheidet man formale und aktuelle Parameter. Vereinfacht gesagt: Der formale Parameter ist ein Platzhalter im Kopf der Methode, der dem Parameter einen Namen und einen Typ gibt und der im Rumpf der Methode wie eine lokale Variable verwendet werden kann. Beim Aufruf der Methode wird hingegen ein konkreter Wert, meist als Ergebnis eines Ausdrucks, für den Parameter eingesetzt; dann sprechen wir von dem aktuellen Parameter.
Hier einige leicht abweichende, aber nicht ganz korrekte Interpretationen dieses Begriffs:
- Der Parameter, der beim Initialisieren erzeugt wurde, aber nicht benutzt wird, ist ein formaler Parameter.
Okay, formale Parameter sind Platzhalter. Benutzt werden sie aber schon, oder? Sonst stellt sich nämlich die Frage, wozu dieser Parameter dann überhaupt dient? - Ein aktueller Parameter ist dauerhaft gültig, solange er nicht überschrieben wird. Ein aktueller Parameter ist außerdem privat.
Auch hier steckt ein Fünkchen Richtigkeit drin, offenbar wurde aber privat mit lokal verwechselt. - Ein formaler Parameter löscht Werte nach Ausführung des Konstruktors.
Diese Definition hat mich schlaflose Nächte gekostet. Ich kann sie leider auch jetzt noch nicht nachvollziehen.
Und hier mein Favorit, weil da etwas anklingt, was mehr mit menschlicher Sehnsucht als mit Java zu tun hat:
- Ein formaler Parameter ist beständig und bleibt immer gleich. Ein aktueller Parameter hingegen ist unbeständig.
Noch einige andere, bedenkenswerte Antworten, die nicht direkt im Zusammenhang mit Parametern stehen:
- private bedeutet geschossen, protected aber gestützt.
Ich hab das mehrfach gelesen, meine Lesebrille aufgesetzt, sie wieder abgenommen, geputzt und erneut aufgesetzt, aber schließlich feststellen müssen: Genau so steht das da.
geschlossen und geschützt hätte etwas mehr Sinn ergeben. - Primitive Typen wie int, float usw. sind Wrapperklassen. Das macht der Computer im Voraus.
Nur zur Erinnerung: Wrapperklassen wie Integer oder Float kapseln primitive Typen wie int oder float und sind in dem Java-Paket java.lang vordefiniert. - Die Polymorphie funktioniert nur anders herum.
Dem ist nichts hinzuzufügen. Hauptsache, sie funktioniert.
Ihr Prof,
Helmut Roderus