Das Experiment “Funktionale Programmierung mit Java” läuft – und bis jetzt recht erfolgreich.
Erste Stunde
In der ersten Stunde habe ich kurz das Konzept hinter Java erklärt, also das man lesbaren Sourcecode programmiert und diesen dann in ByteCode kompilieren (übersetzen) lassen muss. Beide Arten von Dateien *.java und *.class haben wir dann in WordPad angeschaut und kurz verglichen. Manches lässt sich in der class-Datei wiederfinden viel Unlesbares ist dazu gekommen.
Da class-Dateien wie Filme sind, brauchen wir noch einen Projektor zum Abspielen und Anzeigen des Films. Ob der benötigte Projektor (Virtual Machine) jetzt auf Windows, OSX oder Linux ist, ist dabei egal – das gilt zwar nicht immer, kann hier aber als didaktische Reduktion aufgefasst werden.
Zweite Stunde
Nun ging es um das Umsetzen des ersten Programms und das Kennenlernen von BlueJ. Dazu habe ich den folgenden Programmcode an die Tafel geschrieben und jeden Teil erklärt und Bezüge zum Stoff der sechsten und siebten Klasse aufgezeigt. Also so Sachen wie “Klassen-Definitionen sind wie Baupläne nach denen Objekte gebaut werden”.
Nur zur Vervollständigung der Analogie: Der Konstruktor ist der Bauleiter, der aufpasst, ob alles richtig angeliefert und benutzt wird. Benötigen tue ich ihn erstmal nicht.
class HelloWorld {
public void sagen() {
System.out.println("Hallo Klasse");
}
}Nach dem die typischen Fehler (Semikolon, falsche/fehlende Klammern, falsche GROSSkleinSchreibung) auch gelöst werden konnten, kam auch auch schon die dritte Stunde.
Dritte Stunde
In der dritten Stunde wollte ich unbedingt den ersten Zusammenhang zum funktionale Programmieren in Excel bringen und zeigen, wie Funktionen sich gegenseitig aufrufen. Das Beispiel sollte dabei erstmal ohne Mathematik auskommen. Ich wollte die ersten Programmzeilen einfach nur öfters verwenden. So erhoffte ich mir eine Konzentration auf das eigentliche Problem des Methoden-Schreibens.
Ich dachte zuerst an einen Dialog aus einem Buch, wollte aber dann doch die 28 (!) Jungs meiner Klasse mit ein wenig interessanterem Stoff ansprechen und wir haben Frage-Antwort-Witze umgesetzt.
Der zugehörige Java-Sourcecode sah dabei wie folgt aus:
class Hans {
public void witz1() {
frage1();
antwort1();
}
private void frag1() {
System.out.println("Was ist Rot und hängt an der Scheibe?");
}
private void antwort1() {
System.out.println("Tomate in der Mikrowelle");
}
}Leider lässt sich keine schrittweiser Ablauf des Programms mit Pause erstellen, aber das war für alle zu verschmerzen.
Reflektion
Als gute Lehrer sollte man ja ab und zu mal über das Reflektieren was man so macht und das soll nun abschließend folgen:
- Negativ: Neuntklässler kennen eigentlich nur rassistische, erniedrigende und frauenfeindliche Witze. Beim nächsten Mal muss ich was anderes wählen. Vielleicht so Richtung Vokabeln oder Lexikon. Aber das ist dann auch nicht so lustig.
- Positiv: Ich konnte den Schüler zum ersten Mal an dieser Stelle schon erklären, warum manche Methoden public sind (Aufforderung zum Witz erzählen) und private (Den Ablauf und Inhalt des Witzes kennt nur die erzählende Person).
- Problematisch: Schaut man sich das Tafelbild an, so haben die Methoden alle Datenquellen und Datensenken (Pfeile), die aber eigentlich gar nicht umgesetzt werden. Datenquellen wäre Parameter und Datensenken wären Returns. Für die Schüler ist das nicht so schlimm, da durch die Pfeile jetzt eher ein Ablauf dargestellt wird, aber eigentlich missbrauche ich das Datenflussdiagramm als Programmablaufplan. Ich werde also doch schnell auf was mathematisches wechseln müssen.
Insgesamt bin ich mit dem Verlauf soweit zufrieden. Aber diese Pfeilproblematik finde ich noch nicht wirklich befriedigend. Vorschläge?