[Delphi |
OOP] |
Vorwort
Man möchte meinen, daß, wenn einer mehr als zehn Jahre lang Schülern,
Studenten und Lehrern objektorientierte Programmierung beigebracht hat, er
nun endlich wissen müßte, wie das geht. Im Prinzip schon. Aber bereits die
Fülle der verschiedenen Ansätze und Versuche zeigt, daß es offensichtlich
keinen Königsweg gibt, nur bessere oder weniger erfolgreiche Wege.
Einigkeit herrscht in der Überzeugung, daß die objektorientierte Denkweise
für Schüler kein Problem ist, jedoch die handwerkliche Umsetzung ('das
Programmieren') wegen der fehlenden ausreichenden Übungszeit, ohne die es
nicht geht, ein große Hürde ist. Dieses wird noch dadurch verschärft, daß
sich die Schule für DELPHI als Entwicklungsumgebung entschieden hat. Mich
verbindet mit Delphi geradezu eine Hassliebe, wobei ich dennoch glaube,
daß am Ende die Vorteile für den Unterricht überwiegen. Das ist an
anderer Stelle hinreichend diskutiert worden. Ein Programmierstil, dessen Nukleus das Objekt ist, fordert geradezu heraus, die Objekte, die in einem Programm bearbeitet werden, auch auf dem Bildschirm sichtbar zu machen, um eine direkte visuelle Kontrolle der Effekte zu haben, die der Schüler in seinen Anweisungen programmiert. Zu diesem Zweck haben wir die Unterrichtsequenz mit den Grafikobjekten (uGrafik) entwickelt und damit gute Erfolge verzeichnet. Da die Aufgabenstellungen häufig einen mehr oder weniger 'dekorativen' Charakter haben, kommt das Element der Algorithmisierung etwas zu kurz. Dieses zeigt sich auch häufig bei Programmen, die Aufgabenstellungen aus dem wirtschaftlich-verwaltenden Bereich haben. Registrierende Systeme kommen oft genug mit Set.. und Get-Methoden aus. Diese Ausgangslage und reichlich Freizeit haben mich bewogen, eine Karel-Lernumgebung zu entwickeln, die mehr ermöglicht als die klassischen Versionen, die mit Mini-Languages im Wesentlichen in Algorithmen und imperative Programmierung einführen, auch wenn Sie in OOP-Sprache und Dot-Notation daher kommen. Diese Lernumgebungen waren mir nur oberflächlich bekannt (weil ich damit nichts im Sinn hatte) und ich habe bewußt auch auf ein genaues Studium dieser Vorlagen verzichtet, um nicht den Blick zu verstellen für das, was IMHO für eine zeitgemäße Lernumgebung wichtig ist. Gleichzeitig ging es mir noch einmal darum, an einem Beispiel zu zeigen, wie mit den Mitteln der objektorientierten Programmierung (Vererbung, Polymorphie) sparsamer Code zustande kommt, Kapselung die Sicherheit erhöht und die Fehlersuche erleichtert. Die Programmierung war insofern eher eine leichte Anstrengung. Das Ergebnis wird hier für die Besichtigung und hoffentlich auch zur Benutzung vorgestellt. Meinen Kollegen Hartmut Härtl, Johann Penon und Christian Steinbrucker danke ich für Anregungen und Kritik. Richard Pattis (Carnegie Mellon University) gebührt der Dank für die freundliche Genehmigung, den Namen 'Karel' verwenden zu dürfen und Werner Hartmann (ETH Zürich) für richtungweisenden Rat. |