Einführung in die objektorientierte
Programmierung mit Grafik
Programmentwicklung am OSZ Handel, Berlin
- das 1. Halbjahr (Einführung mit OOP) -
-
Didaktische Überlegungen
1.1 Rahmenbedingungen
1.2 Konzeption
1.3 Inhalte / Themen
1.4 Methodik und mediale Komponenten
-
Unterrichtssequenz für das 1.
Halbjahr OOP
-
Arbeitsplan - Beispiel für
Einführung in die Programmierung
-
Aufgaben und Arbeitsblätter dazu
(Die Links aus der Aufgabenseite sind teilweise entfernt, da die
Lerngruppe nicht mehr besteht.)
1. Didaktische Überlegungen
Die Einführung in ein neues Schulfach ist eine äußerst
sensible Phase, in der sich schon sehr früh entscheidet, ob die gemeinsame
Arbeit bis zum Abitur fruchtbar und erfreulich sein wird. Es liegt
weitgehend in der Hand des Lehrers, wie viele und welche Schüler dabei
bleiben werden. Das gilt noch mehr für die Einführung in den
Programmierunterricht, der mit bekannten Vorurteilen belastet ist.
Insgesamt ergibt sich für das erste Halbjahr eine hochkomplexe
Lern-/Lehrsituation:
-
PASCAL lernen (das ist nicht Delphi) als formale
Fremdsprache
-
DELPHI lernen (das ist nicht Pascal), also die
Bedienung und verständige Handhabung eines professionellen
Programmiersystems
-
OO-DESIGN-Prinzipien im Ansatz kennen lernen
-
ANWENDUNGSPROBLEME analysieren (Abstraktion)
und in a + b + c umsetzen.
1.1 Rahmenbedingungen
In Berliner Oberstufenzentren - Wirtschaft und Verwaltung
- ist ein 2-stündiger Informatikkurs in der 11. Klasse Pflichtunterricht.
Es gibt daher an dieser Schule jährlich 8 neue Eingangskurse mit
durchschnittlich 14 Schülern bei ca. 50 % Frauenanteil.
Die Fachkonferenz hat bereits 1995 beschlossen durchgängig
objektorientierte Programmierung zu unterrichten. Das eingesetzte Werkzeug
ist DELPHI.
1.2 Konzeption
Die Leitlinien für den gesamten dreijährigen Unterricht
sind beschrieben durch
- Exemplarisches Lernen statt Vollständigkeit
- Themenorientiert und anwendungsorientiert
- Zunehmend selbständiges Arbeiten der Schüler
- Kein systematischer Sprachkurs, bewusster Verzicht auf die
Behandlung aller Datenstrukturen und Algorithmen
- Bewältigung von Komplexität
- Modellierungsfragen stehen im Vordergrund (OOA/OOD)
- Projektorientiert als Spiralcurriculum, d. h. in jedem Halbjahr eine
Schülerarbeit mit erweiterten Kenntnissen
- Methodisch-didaktisch ausgefeilte Lerneinheiten mit langfristig vor
geplanten Bögen
- OOP im Anfangsunterricht
- Objektorientierung als durchgängiges didaktisches Prinzip und
Erklärungsmuster
- Zufriedene Lehrer und Schüler
Diesen - vergleichsweise hochgesteckten - Zielen soll der
Anfangsunterricht entsprechend genügen.
1.3 Inhalte / Themen
Inhalt und Schwerpunkt der objektorientierten
Programmierung wird die 'Programmierung im Kleinen' sein, also die
Manipulation von Objekten aus vorhandenen Klassen, Methoden und
Algorithmik. Vor dem Entwurf eigener Klassen steht also das Arbeiten mit
Exemplaren - objects first. Als Thema (das ist etwas anderes als Inhalte!)
eignet sich sehr gut Grafik, bei der unmittelbar jede Aktion und
Manipulation auf dem Bildschirm beobachtet werden kann und die die
Phantasie der SchülerInnen anspricht.
1.4 Methodik und
mediale Komponenten
Der methodische Gang kann grob beschrieben werden mit
Analysieren - Modifizieren - Produzieren. Bei 14 Schülern und 90 Minuten
Unterricht (abzüglich 'theoretischer' Phasen) bleiben pro Schüler knapp 5
(!) Minuten Lehrerbetreuung bei der praktischen Arbeit am Rechner. Deshalb
ist es zwingend erforderlich eine effektive Binnendifferenzierung zu
planen, die das individuelle Lerntempo der Schüler
unterstützt. Das wird dadurch gewährleistet, dass die
Arbeitsmaterialien für die Schüler auf dem Webserver liegen und weitgehend
selbständige Arbeit ermöglichen.
Die Aufgaben und Arbeitsplan für das gesamte Halbjahr stehen von ersten
Unterrichtstag im Web und werden im Unterricht statt
Arbeits-/Aufgabenblättern auf Papier verwendet. Jeder Schüler hat somit
darauf einen Zugriff sowohl im Unterricht als auch von zu Hause.
Hochmotivierte können sich natürlich auch die Materialien für die
Folgekurse ansehen. Damit ist eine Vorstufe zu E-Learning gelegt.
Ergebnisse und Zwischenergebnisse können dem Lehrer jederzeit per E-Mail
zur Kontrolle/Korrektur zugesandt werden. Erfahrungen mit BSCW werden zur
Zeit gesammelt.
Betrachtet man die Art der möglichen Programme, die im Unterricht über
3 Jahre bis zum Abitur entstehen können, kann man eine grobe Einteilung
erkennen:
|
Art |
Fachklassen |
Einsatz |
1. |
Mickey-Mouse-Programme,
die keine Probleme lösen:
z. B. 'Hello World' u. ä.
zum Kennen lernen eines Werkzeugs
|
keine |
E-Phase, Anfangsunterricht
|
2. |
Mickey-Mouse-Programme,
die ein Mickey-Mouse-Problem lösen:
z. B. DM in Euro berechnen,
Übung einzelner Sprachkonstrukte wie
program 'Schleife' u. ä.
|
keine |
E-Phase, Anfangsunterricht
Diese Art von Programmen wird am OSZ Handel gar nicht eingesetzt. |
3. |
Kleine Anwendungsprogramme
z. B. BMI, Billard, Schülerverwaltung,
Kryptographie-Programme
|
1-5 |
E-Phase,
Kurs 1 + 2 |
4. |
Softwareprojekte
z. B. Personaleinsatzplaner,
Warenwirtschaft,
Game of Life
|
mehr als 10 |
Kurs 3 |
Nachfolgend ist eine Sequenz für das erste Halbjahr beschrieben, wie
sie von einigen Kollegen durchgeführt wird.
2. Unterrichtssequenz für das 1.
Halbjahr OOP
Übergeordnete Ziele
Da in den nachfolgenden
Grundkursen Schüler aus verschiedenen E-Phasen (und 5 Lehrern) sitzen,
sind verbindliche Absprachen über die Kompetenzen der Schüler am Ende des
Halbjahres von Nöten.
Übergeordnete Ziele sind :
- Komplexität analysieren, verstehen,
bewältigen.
Die Komplexität für den Anfangsunterricht kann aber noch nicht aus dem
Anwendungsproblem kommen, sondern es lässt sich dazu die komplexe
Entwicklungsumgebung von Delphi nutzen.
- Objektorientierte Denkweise verstehen und anwenden
- Fertige (Bibliotheks)Klassen benutzen
- Ein kleines Anwendungsprogramm selbständig entwickeln
Durchgeführter Verlauf
1. Analyse einer komplexen Anwendung:
Geldwechsler oder Fahrscheinautomat
Ziele/Inhalte:
- Programme sind strukturierte große Einheiten, keine Zehnzeiler
- Komplexe Programme sind strukturiert nach abgebildeten
Objekten
a) "Sichtbare" GUI-Objekte auf dem Bildschirm :
Buttons usw. + Automatendarstellung (Erscheinung)
b) "Nicht sichtbare" Daten-Objekte (aus dem Datenmodell):
Wechseleinheit, Geld (Wesen)
Didaktik/Methodik:
Anforderungen beschreiben, GUI-Skizze anfertigen,
Objekte in der Programmdokumentation lokalisieren, kleine Änderungen
im Editor vornehmen, neu kompilieren, testen.
|
Zeitbedarf
Doppelstd. 2 |
2. 0 Übungen: GUI-Objekte benutzen - Delphi
bedienen lernen
"Mickey-Mouse-Programme, die zu nichts nütze sind" -
nur zum Kennen lernen des Werkzeugs, der Bildschirmobjekte und der
Bausteine
Ziele/Inhalte:
- Programme/Oberflächen bestehen aus Objekten/Exemplaren, die aus
(vorhandenen) Klassen abgeleitet sind.
- Attribute, Auftrag, Ereignis-Methoden, Ereignisse.
Die Komplexität liegt hier bereits in der GUI-Ebene und des Werkzeugs.
'hat'-Beziehung zwischen FensterFormular und seinen Komponenten.
- Sprache: Variablen-Konzept, Zuweisung, Typverträglichkeit,
Unit-Aufbau,
Projektbegriff, Namenskonventionen.
Didaktik/Methodik:
Nur GUI-Fenster und GUI-Objekte (3 Buttons, 1 Label). Beispiel:
Farbschalter
- Programmieren / Code schreiben
- danach Analysieren der GUI-Objekte: Attribute finden, im
Objekt-Inspektor
prüfen.
- Zuweisung der Attributwerte, (leider keine Zugriffs-Methoden in
Delphi),
Variablen-Konzept.
- 3 Buttons ==> gleiche Klasse TButton. Klasse / Exemplar.
- danach Analysieren des Fenster-Quelltextes: Klassen, s.o.,
GUI-Hierarchie
entdecken.
Selbständiges Arbeiten
und Lernen fördern durch Einsatz von Arbeitsblättern aus dem
Schulweb.
|
2 |
2.1 Übungen: GUI-Objekte
benutzen + Kontrollstrukturen
"Mickey-Mouse-Programme, die
Mickey-Mouse-Probleme lösen"
Ziele/Inhalte:
- Algorithmen, Kontrollstrukturen, einfache Datentypen
Didaktik/Methodik:
Aus GUI-Komponenten ein Art 'Ampel' zusammensetzen und die
Steuerung schrittweise erweitern
|
3 |
3.
Fachklassen benutzen,
Grafikprogrammierung (+ GUI-Objekte)
Ziele/Inhalte:
- (Mehrere) Exemplare einer Klasse erzeugen, initialisieren,
manipulieren
- Methodenaufrufe, Parameter verstehen und benutzen
- Algorithmik mit Grafikprogrammierung (uGrafik)
Didaktik/Methodik:
- Grafikklassen gemeinsam entwickeln und spezifizieren (OOA)
- dann aber nur benutzen (aus Bibliothek)
- Themen: Zufallsgrafik, Tapetenmuster, Animationen o. ä.
|
6 |
4. Schülereigenes Programm -
Praktikum
Ziele/Inhalte:
- Freies Planen und Implementieren
- Modifikation / Adaption eines der Übungsprogramme
- Thema: Bildschirmschoner o. ä.
|
3 - 4
_________
Ges. 40 Std.
|
Der Schwerpunkt liegt also auf der Vermittlung der objektorientierten
Sichtweise und der Benutzung von Klassen. Diese Sequenz leidet an
einem nicht zu übersehenden Mangel: der Aspekt der Modellierung fehlt
nahezu ganz. Dieses ist der Tatsache geschuldet, dass an Oberstufenzentren
der verfügbare Zeitrahmen in der 11. Klasse um ein Drittel = 20 Stunden
gegenüber grundständigen Gymnasien verringert ist. Deshalb werden diese
Teile in das folgende Halbjahr verschoben und bilden dort den Schwerpunkt
(Grundlagen großer Programmsysteme).
Wegen der Kürze der Zeit treten auch die
methodischen Probleme deutlich hervor. Dazu gehört auch die
Abwesenheit einer systematischen 'Sprachschulung'. Sprachelemente werden
eher eklektizistisch bei passender Gelegenheit eingeführt; d. h. wenn ein
Anwendungsproblem auftritt, das ein entsprechendes Konstrukt erfordert.
Das zwingt dazu, sinnvolle Programmbeispiele zu finden, die noch klein
genug (!) sind, ohne völlig hirnrissig zu werden; ein Problem, das immer
auftritt, wenn man Objektorientierung ernst nimmt.
Erweiterungsmöglichkeiten
Sofern mehr Zeit (3-std. Kurs) zur Verfügung steht oder die genannten
Lernziele schneller erreicht werden, lässt sich das Konzept leicht mit
einem zusätzlichen Lernabschnitt erweitern, sofern man auf der
Grafikschiene zunächst weiterfahren will.
5.
Fachklassen erstellen - Grafikprogrammierung
Ziele/Inhalte:
- OOA
- Klassenbeziehungen
Didaktik/Methodik:
- Fachklassen/Objekte, (die sich selbst darstellen sollen)
gemeinsam entwickeln
und spezifizieren (OOA)
- implementieren
- Themen: Billardkugeln, "richtige" Ampeln, kleine Animationen
|
|
weiter ==> 3. Arbeitsplan - Beispiel für
Einführung in die Programmierung
4. Aufgaben und Arbeitsblätter dazu
|