Einführung in die Programmierung mit Grafik
unter objektorientierter Sichtweise
Programmentwicklung am OSZ Handel, Berlin
- das 1. Halbjahr (Einführung mit OOP) -
-
Didaktische Überlegungen
1.1 Rahmenbedingungen
1.2 Kompetenzen / Ziele
1.3 Konzeption
1.4 Inhalte / Themen
1.5 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. Fünf Lehrer
unterrichten 12 - 14 Kurse. Nach der E-Phase treffen die Schüler auf
andere Lehrer. Schon daraus ergibt sich die Notwendigkeit zur Abstimmung
der Lehrpläne.
Die Fachkonferenz hat bereits 1995 beschlossen durchgängig
objektorientierte Programmierung zu unterrichten. Das eingesetzte Werkzeug
ist DELPHI.
1.2 Kompetenzen /
Ziele
Kompetenzen am Ende der E-Phase sind Standards zum Eingang der Kursphase
im Lernabschnitt ‚Programmieren’.
Im Rahmen des zu planenden Anfangsunterrichts soll bei den
Schülern ein Kompetenzerwerb angestrebt werden, der die gemeinsame
Grundlage für die nachfolgende Kursphase auf der Basis des zukünftigen
Berliner Rahmenplans darstellt.
-
Modell aus einem Weltausschnitt entwickeln und in einem
Klassendiagramm (nach UML) darstellen
-
Ein Anwendungsproblem objektorientiert analysieren, einen
Lösungsansatz entwickeln und mit Hilfe von Programmiertechniken umsetzen
-
Eine Modul-/Klassenspezifikation (Schnittstellen) lesen können und
benötigte Teile in ein Programm einbinden
Die für den Lernabschnitt erforderlichen Sprachelemente sicher
beherrschen und anwenden
-
Ein Programm angemessener Komplexität selbstständig (unter
Zuhilfenahme einer Vorlage) projektieren und realisieren
-
Klassendiagramm zur Strukturierung von Programmstrukturen ,
Nassi-Shneiderman-Diagramm zur Entwicklung von Algorithmen einsetzen
-
Ein Nassi-Shneiderman-Diagramm in Programmcode überführen
-
Auftretende Probleme durch kundiges Benutzen eines geeigneten
(integrierten) Hilfesystems selbständig lösen
-
Umfangreiche Aufgaben untergliedern und in einem Team arbeitsteilig
lösen
-
Absprachen treffen und einhalten
-
Eigene Lösungen der Gruppe vorstellen und verteidigen
-
Eigenes Arbeitstempo entwickeln und verfolgen anhand geeigneter
Arbeitsmaterialien
Anmerkungen
Die Kompetenzen S1 und S2 decken eigentlich die Inhalte OOA – OOD – OOP
im Kurshalbjahr (Grundlagen großer Programmsysteme) ab.
Sie bedürfen einer Entscheidung
ob das im Anfangsunterricht überhaupt schon gemacht werden soll
wenn ja, einer Präzisierung, wie tief das gehen soll
oder ob im 1. Halbjahr nur die Benutzung, Manipulation usw. von
Objekten aus vorhandenen Klassenbibliotheken als Einführung in OOP
geübt werden soll.
1.3 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, bewußter 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.4 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üler anspricht.
1.5 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, daß 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 der Programme |
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,
program 'Schleife' u. ä.
OOP mit Grafik |
keine |
E-Phase, Anfangsunterricht
Diese Art von Programmen wird am OSZ Handel gar nicht eingesetzt.
Einführung in OOP. |
3. |
Kleine Anwendungsprogramme
z. B. BMI, Billard, Schülerverwaltung,
Kryptographie-Programme
|
1-5 |
E-Phase,
Kurs 1 + 2
Schwerpunkt Modellierung:
OOA, OOD, OOP |
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äßt sich dazu die komplexe
Entwicklungsumgebung von Delphi nutzen.
-
Objektorientierte Denkweise verstehen und anwenden
-
Fertige (Bibliotheks)Klassen benutzen (Objects first)
-
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
- Einübung der Programmierumgebung
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, daß 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, um Fachklassen zu erstellen.
5.
Fachklassen erstellen
- Grafikprogrammierung, sofern man auf der
Grafikschiene zunächst weiterfahren will.
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
- oder Themenwechsel (z. B. eine Personenklasse)
|
|
weiter ==> 3. Arbeitsplan - Beispiel für
Einführung in die Programmierung
4. Aufgaben und Arbeitsblätter dazu
|