Vielen Dank für's Zuhören! So, schönen guten Tag, Praxistippsreferendariat, wie fachlich einarbeiten, Curriculumsanalyse. Diesmal am Beispiel der Einführung in die Programmierung, in die objektorientierte Programmierung anhand eines konkreten Projekts, der Body-Mass-Index-Wage. Bei der Einarbeitung, fachlichen Einarbeitung in die Informatik müssen Sie das Curriculum, also den Lehrplan. Berücksichtigen, da wurden bereits eigene Videos zu veröffentlicht. In diesem Video soll es um eine Konkretisierung der ganzen Problematik gehen, indem man den Lehrplan mal hernimmt und auf ein konkretes Einführungsprojekt in die Programmierung runter bricht und da wird man dann feststellen, dass eine ganze Menge von Problemen in der Programmierung hernimmt. An Inhalten schon in einem Projekt erledigt sind. Stellen Sie sich vor, Sie unterrichten die Einführungsphase in die Oberstufe. Die Schüler haben keine Programmiererfahrung, davon müssen sie jedenfalls ausgehen. Die Informatik setzt ja neu ein in der Oberstufe, auch wenn in der Unter- und Mittelstuf gegebenenfalls schon Vorwissen erworben wird. Davon können sie aber zumindest momentan nicht ausgehen. Weil das in der Mittelstufe kein Pflichtfach ist. Sie werden immer ein paar Leute mit Programmiererfahrung haben. Das ist ein genuines Problem der Informatik, des Informatikunterrichts an Schulen. Aber die Ausgangssituation ist keine Vorkenntnisse. Und ein großer Teil in der Unterrichtsplanung der Einführungsphase ist die Programmierung, die Einführung in die objektorientierte Programmierung. Wir werden gleich den Lehrplan im Detail betrachten. Hier ein Überblick, was an Fachinhalten in diesem BMI-Wageprojekt enthalten ist. Klassenentwurf nach Textsituation. Das heißt, es gibt einen Auftrag und es soll eine entsprechende Klasse formuliert werden. Dort kommen Sie automatisch auf die diversen fachlichen Details zu sprechen. Zum Beispiel Attribute, Methoden, Sichtbarkeiten. Wir werden Methoden aufgerufen. Welche Konsequenzen haben Sichtbarkeiten, sprich Public und Private, die beiden, die es in der Schule NRW gibt, sodass sie zu Settern und Gettern kommen bei privaten Attributen. Wie wird dokumentiert? Wie wird COLD analysiert und erweitert? Wie werden Testklassen formuliert? Wie werden Algorithmen, Entworfen implementiert und getestet? Kriegt man den Zustand eines Objekts raus? Beziehungsweise, was ist das eigentlich? Ja, da sehen Sie ja so eine ganze Liste an Fachinhalten, die alle in diesem BMI-Projekt angesprochen sind. Und immer wieder angesprochen werden, wenn Sie ähnliche Projekte wie die Vage dann wochenlang zur Übung stellen, damit diese ganzen Fachinhalte auch gefestigt sind und sich irgendwann in ... ... Fähigkeiten umwandeln. Das blende ich gleich nochmal in groß ab. Hier habe ich markiert, was an Lehrplaninhalten alles ... ... thematisiert wird. Ich blende das gerade mal ein. Das können Sie dann besser lesen. Das ist der Lehrplan, der aktuelle Lehrplan NRW Oberstufe Einführungsphase. Daten und ihre Strukturierung, Inhaltsfeld 1. Da finden Sie das Wesentliche, was Sie zur Programmierung in der Einführungsphase unterrichten müssen. Gehen wir kurz durch. Wir werden dann nach dem Projekt noch mal drauf zu sprechen kommen. Objekte und Klassen, das sind die Schwerpunkte und alles, was rund um Objekte und Klassen einführungsmäßig so vorzufinden ist an Fachinhalten. Ermitteln bei der Analyse einfache Problemstellungen, Objekte, Eigenschaften, Operationen, Modellierenklassen mit den Attributen und Methoden, Orte und Attributen, Parametern, Rückgabe von Methoden, einfachen Datentypen zu, Sichtbarkeiten, Zustand eines Objekts, Dokumentation, Analyse und Erläuter an objektorientierte Modellierung. Und dann das ganze auch auf algorithmischer Seite, analysieren und erläutern, Algorithmen und Programme, modifizieren sie, entwerfen sie, implementieren sie und testen sie. Dann, äh, wenn man damit zum ersten Mal konfrontiert wird, dann lesen sich solche Listen als ziemlich umfangreich. Aber dreiviertel von dem, was sie in der Programmierung machen müssen, ist in diesem Projekt enthalten. Also hier ist ja fast alles gelb. Und das ist doch schon mal eine motivierende Situation. Das ist die originale Aufgabenstellung, die zur Abrundung integriert. Da werden wir das gar nicht so im Detail eingehen. Sie wissen, was der Body Mass Index ist. Der ist hier definiert als Körpergewicht in Kilogramm zur Größe zum Quadrat. Ja, also Kilogramm pro Fläche. Kilogramm pro Quadratmeter ist die Einheit vom BMI. Und dann haben Sie hier eine Tabelle. Gut, kommen wir zum eigentlichen Projekt. Wenn Sie den Unterricht planen, können Sie das natürlich in vielfältiger Weise machen. Das ist die Aufgabenstellung und meine kurzen Erläuterung dazu, die jetzt mehr auf den Lehrplan... ...fokussiert sind und nicht auf das Projekt im Detail, können Sie natürlich modifizieren, wie Sie das für richtig halten. Je nachdem, wann Sie das Vage Projekt im Unterricht nutzen, gibt es mehr oder weniger Vorkenntnis und Sie können mehr oder weniger Vorgaben dann tätigen. Sie können ja auch ein fertiges oder fast fertiges Projekt vorgeben und dann Schwerpunkt auf Code Analyse und Erweiterung legen oder Sie entwickeln... ...einige wenige Dinge im Plenum, um vom Text, von der Aufgabenstellung zur Klasse zu kommen und lassen den Rest dann selber machen oder Sie sagen einfach gar nichts, teilen den Zettel aus und schauen mal, wie weit die Gruppe kommt und das ist ja alles möglich, alles legitim, es bleibt Ihnen überlassen Mit Blick auf den Lehrplan gehen wir folgt vor, wir haben also die Aufgabenstellung Ich... ...zeige Ihnen mal das laufende Programm, so ist also die Interaktion, das User Interface Textbasiert, das kleiner Tipp am Rande, ist zwar optisch nicht so ansprechend, aber verschwenden Sie nicht Ihre Zeit mit grafischen Benutzeroberflächen, das bläht den Quellcode nur auf, lenkt völlig vom Thema ab und ist absolut null abiturrelevant Gewicht in Kilogramm eingeben, sagen wir mal 80 Kilo Größe in Zentimeter, sagen wir mal 1,90 Geschlecht, männlich und dann spuckt er Ihnen hier Ihre Daten aus damit Sie auch eine Kontrolle haben, ob die Daten richtig angekommen sind und berechnet dann den BMI und seine Schlussfolgerung. So soll das Ganze aussehen. Das empfehle ich Ihnen auch zu Beginn des Unterrichts mal vorzumachen, damit jeder weiß, wie das Endprodukt aussieht. Man hat also geklärt, dass jeder weiß, was zu tun ist, wie das Endprodukt aussieht, was der BMI ist. Und jetzt ist ja die erste Frage Klassendesign. Wie kommen Sie von der textuellen Beschreibung des Problems zur Klasse? Ermitteln bei der Analyse einfacher Problemstellungen Objekte, ihre Eigenschaften, ihre Operationen. Modellieren Klassen mit ihren Attributen, ihren Methoden. Wenn Sie die Klasse haben, haben Sie auch immer automatisch das Objekt. Das wissen wir. Den Zustand eines Objekts kriegen Sie aus der Klasse, indem Sie den Klassen-Attributen-Werte zuweisen. Ganz einfach. Die Testung ist hier, stellen den Zustand eines Objekts da und testen Programme schrittweise. Das haben Sie hier auch umgesetzt. Anhand der Testklasse gehen wir gleich nochmal ein. So, wie kommen Sie da jetzt vom Text zur Klasse? Sprechenden Namen verwenden, immer darauf bestehen und dann müssen Sie hier vielleicht im Plenum, je nach Vorkenntnisse, die Attribute festlegen. Da sind Sie auch hier im Lehrplan den Attributenparametern, Rückgabenvermittlungen, einfache Datentypen zu. Das heißt, am Anfang in der Einführung, in die Programmierung gibt es noch keine nicht primitiven Datentypen vom Datentyp String abgesehen. Das stört erfahrungsgemäß aber niemanden, dass das weder klein geschrieben wird, wie alle anderen primitiven Datentypen, noch rot hervorgehoben wird. Das fällt den meisten einfach nicht auf. Und das ist aber genau der Ansatzpunkt, den sie dann nutzen können. Wenn sie zu einem späteren Zeitpunkt nicht primitive Datentypen explizit thematisieren, dann haben sie nämlich immer schon automatisch einen benutzten Vaninproblem, was der ganze Sache dann förderlich ist. Okay, also Gewicht und Größe, warum brauchen wir die? Naja, weil das Eingaben an die Klasse sind, die notwendig und nicht berechenbar sind. Berechenbare Werte werden nicht als Attribut. Sondern sind dann methodenlokal, das als grober Richtschnur für Sie zum Vermitteln an Ihre Lerngruppe. Und das Geschlecht natürlich. Sie könnten natürlich auch einen Char nehmen, wenn Sie noch keinen String einführen wollen. Ansonsten, diese drei Attribute sind nicht berechenbar und kommen von außen als notwendige Daten in die Klasse hinein, beziehungsweise ins Objekt. Ok, deswegen sind es Attribute. Sie müssen sich in irgendeiner Form auseinandersetzen, welche Methoden sie brauchen, nachdem die Attribute geklärt sind. Sie wissen, eine Klasse besteht immer aus Klassenname, Attributen und Methoden. Das Konstruktorproblem, da werden Sie darauf eingehen. Und dann eventuell die Frage, ob Sie mehr als einen Konstruktor verwenden. Da, da. Direkt der Tipp für die Kursphase. Wenn Sie das in der Einführungsphase mal machen, also mehr als einen Konstruktor verwenden, dann stört das auch niemanden, erfahrungsgemäß, dass sie gleich heißen und sich nur in der Anzahl ihrer Parameter unterschreiben. So haben Sie direkt den Übergang als konkretes Beispiel für die Überladung. Es gibt ja da in der objektorientierten Programmierung das Problem vom Überschreiben und Überladen. Und wenn Sie das dann irgendwann mal explizit thematisieren, haben Sie hier schon ein Beispiel, dass das erfolgreich verwendet wurde, ohne dass man da irgendwie mehr hinter vermutet hat. Und dass das auch nie ein Problem war, auch in Zukunft keins werden wird, wohl aber mit erhöhtem Wissen über die dahinterstehenden Sachverhalte. Okay, und der Rest an Methoden ist ein bisschen Geschmackssache. Da wird dann jeder auch leichte Abweichungen in der Umsetzung haben. Sie können das vorgeben, so ein Methodenrahmen, ja, so der Kopf, wie er es vorgegeben hat, oder auch nicht. Das ist, wie gesagt, abhängig von vielen Faktoren, unter anderem vom Kenntnisstand und der konkreten Zielsetzung mit dem Projekt. Zetter und Getter, da sind wir bei dem Problem der Sichtbarkeiten. Ich empfehle Ihnen hier explizit immerhin zu schreiben, was für Sichtbarkeiten vorhanden sind. Die Automatismen von Java sind zwar hilfreich für den Vorgestrittenen, aber eben nicht für den Anfänger. Wenn Sie private Attribute verwenden, was Sie immer machen sollten, dann brauchen Sie automatisch Zetter und Getter. Ok, die Umsetzung, da möchte ich gar nicht weiter darauf eingehen. Achten Sie beim Unterricht darauf, dass eine Methode immer genau eine Sache macht und dass Sie vorsichtig sind mit Ausgaben. Die können zu Testzwecken sehr hilfreich sein, allerdings neigt der Anfänger dazu, überall eine Ausgabe einzufügen und dann haben Sie später Probleme, wenn das Modularisierung oder Übertragung auf GUI geht. Nachdem wir einen Eindruck haben, gehen wir nochmal durch den Lehrplan. Wir haben Klassen modelliert. Wir haben entsprechende Attribute und Methoden identifiziert. Das heißt, die ersten beiden Punkte haben wir schon abgearbeitet. Wir haben die Attribute und Methoden mit den entsprechenden Datentypen versehen. Und die Sichtbarkeiten eruiert. Zustand des Objekts, das machen wir in der Testklasse. Wir haben es dokumentiert. Achten Sie von Anfang an darauf, wie Sie die Dokumentation haben wollen. Es ist sehr gewöhnungsbedürftig, sagt die Erfahrung, vernünftige Kommentare zu schreiben. Wenn Sie da keinen Wert drauf legen, wird es nie was. Also dieser... Diese Balance zwischen sinnvollen Kommentaren und überflüssigen oder gar keinen Kommentaren, die ist in der Praxis nicht so leicht zu finden. Machen Sie sich der Rechtseich Gedanken zu, wie Sie das umsetzen wollen. Keine Dinge fordern, die Sie nicht einfordern und zwar ständig. Und vor allen Dingen müssen Sie das natürlich richtig vormachen, ja auch ständig, sonst wird das nichts. Führen durch Vorbild, nichts anderes. Analysieren und erläutern eine objektorientierte Modellierung, ja. Es ist zwar nur eine Klasse, aber es ist letzten Endes objektorientiert formuliert und ein Modell für etwas, nämlich für das Problem, eine BMI-Wagge zu programmieren mit Java. Also ist es eine objektorientierte Modellierung, wenn gleich keine umfangreiche. Naja, das kann man in der EF auch nicht erwarten. Das heißt, wir haben bis auf die Testung hier alles schon abgehakt. Und was den Algorithmus-Part angeht, es wurde ein Problem analysiert. Und ein Lösungsverfahren, ein eindeutiges Lösungsverfahren für das BMI-Wage-Problem entworfen, also haben wir einen Algorithmus formuliert und auch implementiert und bald getestet. Das heißt, bis auf die Testung und den Zustand eines Objekts ist hier alles erschlagen. Besagt, getan, Tester, ich empfehle Ihnen von Testklassen, Gebrauch zu machen. Da üben Sie die gleichen Dinge, wie sie bei Klassenentwurf selbst auch vorkamen. Welche Methoden werden benötigt, wie sieht es mit den Datentypen aus, welche Sichtbarkeiten haben die und wie werden Methoden aufgerufen. Ob Sie Hilfsklassen verwenden oder nicht, das bleibt natürlich Ihnen überlassen. Ich empfehle Ihnen alles so einfach wie möglich zu erhalten. Nicht für jedes Problemchen ein extra Tool oder eine extra Klassenbibliothek. Das müssen wir über testen, wie Sie selbst damit klarkommen. Wichtig dann bei jeder Testklasse, sprech einen Namen verwenden und natürlich braucht man ein Testobjekt. Okay, so, dann. Was haben wir hier? Ja, da kümmern wir uns jetzt nicht drum, sodass sie hier alle Lehrplan, gelb markierten Lehrplan Anforderungen in diesem kleinen Projekt schon erfüllt haben. Gehen wir nochmal auf die Fachinhalte ein. Wir haben eine Klasse entworfen nach einer textuell beschriebenen Situation. Wir haben Attribute und Methoden sowie die Sichtbarkeiten und die Datentypen dieser Klasseninhalte festgelegt. Wir haben diverse Methoden aufgerufen, unter anderem auch in der Testklasse. Da wir Attribute private versehen haben, haben wir Setter und Getter. Benötigt und das ganze dokumentiert, sodass wir selbst und jeder, der das extern liest, auch morgen noch verstehen, warum wir gewisse Dinge gemacht haben. Je nachdem, wie viel Code sie vorgeben, haben sie mehr oder weniger viel Code analysiert und erweitert. Erweitert in jedem Fall, analysiert je nachdem. Wenn sie bei Null angefangen haben, gab es da nicht viel zu analysieren. Ansonsten können sie auch ein vollständiges Projekt zur Verfügung stellen. Es wurde ein Lösungsverfahren für ein Problem entworfen, unsere Klasse, implementiert und getestet. Wir haben einen Test durchgeführt, in dem Fall per Testklasse und den Zustand eines Objekts erfahren, nämlich indem wir die Ausgabe getätigt haben. Das lauffähige Programm habe ich Ihnen am Anfang gezeigt. Da wurden die Attributwerte und die berechneten Werte der BMI selbst auf der Konsole ausgegeben, also der Objektszustand untersucht. Und wenn Sie sich jetzt kurikular betrachtet klar machen, das Inhaltsfeld 1 und 2, also 2 von 5. wurden zum größten Teil bereits in diesem einführenden Projekt bearbeitet. Und das nimmt vielleicht ein bisschen die Bedenken, die man als Anfänger hat, wenn man solche Listen sieht. Gehen Sie nicht von diesen Listen aus und bauen dann Ihre Projekte, sondern bauen Sie Ihre Projekte und bearbeiten oder prüfen anschließend diese Lehrplanlisten. Wenn Sie das Projekt BMI-Waage also konzipiert haben, dann gehen Sie mal hier durch und markieren sich in ähnlicher Weise, was an Lehrplaninhalten wurde denn da bereits erfasst und da werden Sie auch in den anderen Bereichen feststellen, der Lehrplan geht recht zügig in solchen konkreten Unterrichtsarbeiten auf. Hier abschließend nochmal eine mögliche Formulierung, wie man das als Arbeitsblatt verteilen könnte. Der Hintergrund dieser Formulierung ist, dass die Lehrgruppe noch relativ wenig Programmiererfahrung hat. Das ist also ein Projekt, das im Anfangsunterricht auch wirklich ziemlich am Anfang steht. Deswegen alles sehr kleinschrittig. Durchgeführt und ein Punkt, den ich Ihnen abschließend auch mit auf den Weg geben kann, ist die Problematik der Namensgebung und Methoden, Anzahl und Art im Anfangsunterricht. Es werden logischerweise, was Sie ja mit Anfängern zu tun haben, alle möglichen Probleme auftauchen und Sie werden recht viel ähnliche Fragen beantworten müssen. Vom Semikolon vergessen, über falsche Klammern und so weiter und so fort. Und es ist nicht zu empfehlen, dass Sie sich da lange einlesen müssen. Gerade in den ersten Wochen der Einführung in die Programmierung steht zu empfehlen, dass Sie Dinge vorgeben. Ja, hier zum Beispiel ist der Name der Klasse vorgegeben und die Attribute konkret benannt. Das heißt, wenn Sie also rumgehen, dann heißen die Dinge über allen gleich. Und wenn Sie dann hier die zentrale Methode Body Mass Index, wenn Sie da einen Fehler suchen, dann müssen Sie nicht jedes Mal umdenken, wie hat denn Fritz Müller das jetzt hier genannt, ja, die Größe, und wie hat das Lieschenmüller gemacht. Dadurch wird auch gleichzeitig ein gutes Vorbild für sprechende Namen gegeben. Und die Schüler fangen nicht an, die Sachen zu nennen, sprechende Namen. Natürlich, je weiter die Kenntnisse fortgeschritten sind, desto weniger geführt muss das Ganze sein und das müssen sie irgendwann sowieso aufgeben, weil ja dann gerade die Flexibilität und auch ein Teil der Kreativität im Auge des Betrachters liegt und die Leute einfach mal machen sollen, ohne dass viel Rahmen vorgegeben ist. Ja, gut, dann. Ich hoffe, dass Ihnen das Curriculum hier anhand eines konkreten Projekts ein bisschen einsichtiger geworden ist und wie gesagt, lassen Sie sich nicht zu sehr von solchen Lehrplänen schocken, die sind weniger umfangreich, als man immer denkt. Viel Erfolg!