Was muss man sich jetzt unter der objektorientierten Programmierung vorgeschrittene Konzepte im wesentlichen vorstellen?
Das ist eine ganze Menge. Und meiner Ansicht nach ist es besonders wichtig für sie als Lehrkraft, dass sie diese ganzen Konzepte, Begrifflichkeiten, Ideen im Vorfeld
durchdenken und sich intensiv Gedanken machen, wie sie das vermitteln wollen.
Denn sie wissen selber, dass die Konzepte der objektorientierten Programmierung sehr eng miteinander verwoben sind.
Und diese Verzahnung ist natürlich insofern schwierig, als wenn sie das zum ersten Mal hören.
Dann bedingt eines das andere, sie haben aber noch keine Klarheit im Kopf.
dass sich diese Klarheit entwickelt bei Ihren Lernenden. Das ist ja Ihre Aufgabe.
Das heißt, überlegen Sie sich, wie Sie was wann erklären, darstellen, üben lassen,
verzahnen und machen Sie sich besonders Gedanken, wie Sie die Übungen
gestalten wollen. Das als Vorwort, welche Inhalte
kommen einem denn da so im Wesentlichen entgegen? Das ist zum Einen das
Object als Datentyp.
Das ist praktisch diese
datentyp-freie Box, wo man alles reinpacken kann. Das hört sich ja zunächst mal nach einer guten Idee an, hat aber, wie Sie wissen,
entscheidende Nachteile. Hebelt unter anderem die Typprüfung auf und die ist ja gerade
sind objektorientierter Programmierung, sodass sie dann wieder zurückrudern müssen und andere
Inhalte kommen.
Konzepte als sinnvoll erscheinen, weil es objekt alleine als datentyp nicht so
wirklich bringt. Sie werden primitive und nicht primitive datentypen unterscheiden,
dann zum begriff der referenzvariablen kommen für nicht primitive datentypen,
weil eben nur call by reference aktiviert wird, also die referenz
übergeben wird beispielsweise bei einem methodenaufruf, während bei call by
reference aktiviert wird.
tatsächlich eine Kopie
übergeben wird. Sie also nur bei call by reference, das ist wirklich mit dem Original zu tun haben.
Da kriegt man als Anfänger schnell einen Knoten im Kopf, das müssen wir sorgfältig erklären.
Prinzip der Datenkapselung, das Geheimnisprinzip. Ein Objekt kümmert sich nur um seine eigenen Daten und um nichts anderes.
Keiner
soll von den Daten was wissen, außer das Objekt. Und dann haben sie natürlich direkt die Frage, ja, wie können die
Nutzer der Daten dann kommunizieren mit
dem Objekt und wie können die an die Daten rankommen? Da kommen sich das Setter und Getter
Überlegungen, die sie teilweise auch in der Einführungsphase schon
erklärt haben, als sie
den Aufbau von Klassen thematisiert haben, das wir dann hier
nochmal reflektiert und auf einer abstrakteren Ebene
oder komplexeren Ebene, so muss ich sagen, wiederholt oder eingebettet.
Dann geht es mit der Vererbung los und mit den Konsequenzen, die daraus
entstehen, nämlich Hierarchien von Klassen,
dem Prinzip der Ersetzbarkeit. Sie wissen, wenn sie
eine Variable deklarieren, dann
mit einem nicht primitiven Datentypen, dann kann der Datentyp selbst da natürlich als Objekt drin stecken oder alle seine Unterklassen, weil die den Anforderungskatalog hier erfüllen.
Das wiederum führt zu den Ideen des statischen und dynamischen Datentypens und des gar nicht so
leicht zu durchdringenden dynamischen Methoden auf Rufs.
Weil in einem
in einer Variable vom dynamischen Datentyp a sowohl Objekte des Datentyps a als auch all seiner
Unterklassen drin stecken können weiß man ja Apriori nicht mehr welche Art von Methode da jetzt
nur aufgerufen wird die aus a oder die aus den Unterklassen überschriebenen dynamischer
Methoden aufruf
für zur Methodenbindung
und dem Konzept von überladen und überschreiben
das müssen sie erst mal selber noch mal reflektieren
und dann wie gesagt sich fragen wie kann ich das vernünftig erklären
schön progressiv und mit reichlich Übung
ok dann gibt es als sagen wir mal
fortgeschrittenere Modellierungsinstrumente, so würde ich das mal
beschreiben wollen. Die reinen abstrakten Klassen, also die Interfaces, dann die
abstrakten Klassen und die generischen Datentypen und das ganze Modell
orientiert als Entwurfs- und Implementationsdiagramme.
Letztere müssten sie vor allen Dingen lesen und implementieren können.
Als Schüler entwerfen eher weniger, also das ist zwar Teil des Lehrplans, aber in den Abiturarbeiten, weil das so lange dauert, geht es eher darum, fertige Entwurfs- und/oder Implementationsdiagramme verständlich lesen, interpretieren, danach und früher aufschreiben zu können und Teile zu implementieren oder Erweiterungen vorzunehmen.
Genierische Datentypen sind ziemlich Standard geworden in den letzten Jahren im Abitur.
Abstrakte Klassen eher weniger, Interfaces durchaus öfter als abstrakte Klassen, aber
auch wieder nicht so häufig.
Ich sehe persönlich die Interfaces mehr als
sinnvoller Schritt innerhalb der sinnvollen Erweiterung des Klassenkonzepts
im Verhältnis mit Vererbung und Klassenhierarchien. Wenn es darum geht
komplexere objektorientierte Modelle zu erstellen und entsprechend
leistungsfähige Modellierungsinstrumente zu haben. Da machen Interfaces natürlich
Sinn genauso wie abstrakte Klassen, aber
rein von der Quantität des Vorkommens in den Abiturklausuren im Grundkurs
sind die jetzt
sagen wir mittelprächtig relevant.
Gut, also das ist, wie Sie sehen, eine ganze Menge. Sie wissen auch, das sind nun mal
die zentralen Ankerpunkte der vorgeschrittenen Objektorientierung,
was Sie
das Konzeptionelle angeht.
Und denken Sie sich da in Ruhe ein, sprechen Sie mal mit erfahrenen
Kollegen, wie die da vorgehen, schauen sich die Lehrbücher ein, erinnern sich an ihr eigenes Fachwissen aus den Vorlesungen.
Dann wird natürlich noch in anderen Themengebieten ein bisschen programmiert, da sind vor allen Dingen Datenbanken und Netzwerke.
Zu nennen die Netzwerkprogrammierung ist nur im Leistungskurs momentan relevant, während Datenbanken in Form von SQL auch
auf einer Teilmenge operierend im Grundkurs relevant sind. Sie müssen allerdings im Grundkurs nicht per Java
auf Datenbanken zugreifen über SQL. Das machen sie nur im Leistungskurs.
Je nachdem, wie fit sie da sind, müssen sie sich dann auch mehr oder weniger breit einlesen, auch da liegen aber wieder fertige Klassen
zugrunde, die sie dann nutzen müssen.
Auch wenn sie SQL und Netzwerk-Programmierheld sind, müssen sie sich trotzdem da einarbeiten,
denn es sind halt die zugrundeliehenden Klassen zu nutzen, die nur wenige Methoden haben
und damit müssen sie dann die Probleme, die Aufgabenstellungen in Griff kriegen.
Die sind aber, wie alle Aufgaben im Abitur und generell an Schule, in ihrer Komplexität natürlich begrenzt.
Sie haben ja nicht drei Monate Zeit, irgendein Programm zu erstellen, sondern sollen exemplarisch lernen und das hat natürlich eine Komplexitätsreduktion zur Folge.
Sodass sie recht viel tatsächlich in der Oberstufe in Informatik machen und durchaus eine sehr solide Ausbildung genießen können, das sei auch mal gleich gesagt, als Lernender, wenn sie einen guten Lehrer haben.
Allerdings...
Aus Sicht der Lehrenden ist das jetzt so zu sehen, dass die natürlich nicht hinter jedem Begriff die epische Breite stehen haben, wie an der Hochschule.
Das versteht sich von selbst, ist aber als Referendar dann durchaus mal hilfreich, wenn man das gesagt bekommt.
Sie sehen da so viele Dinge, in die sie sich mal wieder einarbeiten müssen, was sie vergessen haben oder vielleicht in Einzelaspekten auch nie wirklich gehört haben.
Aber das ist jetzt immer noch...
in überschaubarem Umfang. Sie müssen jetzt nicht eine 2-semestrieige Vorlesung über Datenbanken nochmal wiederholen, nur weil sie SQL dann Schule unterrichten müssen.
Also immer ruhig Blut und das meiste lässt sich durch gute Vorbereitung und vorausschauendes Arbeiten ganz gut den Griff kriegen.
Ja, was kommt nicht vor? Das ist immer wichtig, sich zu fragen, wenn man sich fragt, was kommt vor, was kommt dann nicht vor?
Also immer ruhig Blut und das meiste lässt sich durch gute Vorbereitung und vorausschauendes Arbeiten ganz gut den Griff kriegen.
Ganz wichtig, meiner Ansicht nach, der fast komplette Bereich des Software -Engineerings entfällt.
Warum? Da sie ja nur Projekte überschaubarer Komplexität machen müssen.
Optional ist immer eine andere Frage, machen müssen, brauchen sie auch nicht ausgeklügelte
UML-Diagramme mit allen möglichen Werkzeugen und Optionen.
Der Software-Engineering, also das, was Sie da, wenn Sie so eine Vorlesung gehört haben, gelernt haben, dann können Sie im Wesentlichen vergessen an Schule, hat natürlich den Vorteil, dass Ihnen diese ganzen Probleme, die erst ab einem gewissen Komplexitätsgrad entstehen, erspart bleiben als Lehrkraft.
30 Klassen und zehntausende von Zahlen Code kommen an Schule nicht vor.
Keine Codeaufbläher sind obligatorisch, so habe ich die mal genannt, weil sie blähen,
wie sie wissen, den Code auf und tragen nicht unbedingt zum Verständnis bei.
Was ist darunter zu verstehen? Insbesondere grafische Benutzeroberflächen
und das ganze Event-Handling ums selbige zum Leben.
Das entfällt komplett an Schule, obligatorisch. Es ist nicht Abitur-relevant.
Es gibt keine GUIs und kein Event-Handling, obligatorisch.
Ich sage das nochmal, es gibt keine GUIs und kein Event-Handling im Pflichtbereich.
Mein persönlicher Tipp ist, lassen Sie das entweder komplett weg,
aus dem Unterricht, weil es nicht nur nicht Abitur-relevant ist. Es bringt auch meiner Ansicht nach nichts an informatischem Mehrwissen.
Und wenn Sie es dann doch verwenden, dann entweder als Zusatzaufgabe für die Schnellen, da ist sicherlich eine gute Idee,
oder aber in Form von fertigen GUIs. Wenn Sie sagen, ja, man soll auch mal mehr als eine Textzeile sehen, ok,
aber dann empfehle ich Ihnen dringend, machen Sie das GUI, geben das als fertige Vorlage vor,
und die Lerngruppe kann das dann einfach nur nutzen, aber das "einfach nur" müssen Sie sich auch überlegen,
sonst haben Sie wieder Zusatzprobleme geschaffen, die dann vom eigentlichen Inhalt ablenken.
Ja, so lange redet ein kurzer Sinn, wenn es rein ums Lernen geht und darum geht es,
an Schule eigentlich ursprünglich, tut es auch die Kommando-Zahl, tatsächlich.
Ja, und da hat sich, da beschweren sich die Schüler auch nicht drüber.
Das ist auch so ein Märchen, was gerne erzählt wird.
Gut, unüberschaubare Klassenhierarchien, die werden Sie auch nicht finden, weil wie
gesagt die Komplexität hat enge Grenzen und Wald an Bibliotheken, die Sie da nutzen können
oder sollten, damit Sie nicht alles selber machen, der gibt im Wesentlichen auch nicht
an Schule.
Und die ganzen Problemfälle, Sonderfälle und Sand im Getriebe Mechanismen, die Ihnen
bei richtigen Softwareprojekten unterkommen, die ...
Davon sind sie im Wesentlichen aufgrund der geringen Komplexität der Projekte auch verschont.
Und das sollte doch Mut machen, wenn sie nicht gerne programmieren.
Dann sagen wir mal so ein kleines Programmchen, da kriegt nur jeder Informatiker hin.
Aber sie müssen da jetzt nicht ein episches Werk produzieren.
Gut, was sagt uns das? Wie könnte ein Resümee lauten?
Ich empfehle Ihnen dringend ...
... rechtzeitig und vorausschauend in die Einarbeitung zu gehen.
Das können Sie ...
... schon während des Studiums machen, natürlich ...
... oder aber ...
... im Referendariat, ...
... am besten beides zusammen in Kombination, ...
... nutzen Sie die alten Abiturarbeiten, wenn es darum geht, ...
... die im Lehrplan abgedruckten Inhalte wirklich so mit Leben zu füllen.
Denn aus den Lehrplänen wird weder der Stellenwert noch Breite und Tiefe
so richtig deutlich.
Ja, da steht alles Mögliche, aber nicht alles ist gleich relevant.
Da helfen Ihnen alte
Abiturarbeiten des Zentralabiturs doch sehr weiter.
Ferner der schon gegebenen Tipp, lassen Sie diesen ganzen Schnickschnack weg,
lagern Sie das in Zusatzaufgaben aus
Fahren Sie erstmal ein reines Pflichtprogramm in dem Sinne, dass Sie sich auf die Inhalte
konzentrieren, die tatsächlich obligatorisch zu vermitteln sind, optimieren Sie Ihr eigenes
Vorgehen, gewinnen Sie Routine und wenn Sie dann noch sagen, man hat noch Zeit oder
ich möchte dieses oder jenes aufgrund von persönlicher Präferenz ergänzen, dann
können Sie das innerhalb der nächsten Jahre ja immer noch tun.
Belasten Sie wieder sich noch Ihre Lerngruppe mit Dingen, die nicht relevant sind für das Abitur.
Das können Sie nach und nach erweitern, wenn Sie das dann für nötig halten sollten, was der Erfahrung nach meistens dann nicht mehr der Fall ist.
Wenn Sie sich das aussuchen können, was wohl eher nicht der Fall ist, aber nach dem Referendariat nehmen Sie erstmal einen Grundkurs.
Ja, den wird man Ihnen dann eher aufs Auge drücken.
Sammeln Sie Erfahrungen, erstellen Sie Unterlagen für einen Grundkursdurchgang und dann können Sie immer noch die Leistungskursinhalte aufsatteln
und die LK-Inhalte dann im übernächsten Durchgang den schnell motivierten GECA -Schülern als Zusatzaufgabe verpassen.
Wenn Sie im Referendariat sind, da ziehen ganz viele Leute an.
Ihnen in verschiedene Richtungen, behalten Sie aber für sich immer im
Hinterkopf, was passiert
nach dem Referendariat. Dann haben Sie dann die volle Verantwortung über
alle Inhalte und Lerngruppen und je besser Sie
vorbereitet sind, je mehr Sie sich im Referendariat langfristig vorausschauend
eingearbeitet haben, auch in die Inhalte, die Sie nicht direkt im
Referendariat unterrichtet haben.
Sie können ja nicht von 5 bis 13 alles unterrichten im Referendariat. Sie machen ja nur exemplarisch mal Besuch oder eigenständigen Unterricht.
Nutzen Sie die Zeit unbedingt, um sich zumindest in die Oberstufe grundständig einzulesen und da schon mal eine Unterrichtsreihe im Wesentlichen zu konzipieren, Ihre Gedanken zu ordnen, vielleicht schon erstes Material.
Und tatsächlich zu erstellen, sodass Sie es einsetzen können. Das erspart Ihnen ganz viel Arbeit, Aufwand und Kopfchaos, wenn Sie dann nach dem Referendariat Ihren ersten Job verantwortlich übernehmen.
Gut, viel Erfolg!
Vielen Dank für's Zuschauen!