Inhaltsverzeichnis Inhaltsverzeichnis Objektorientiertes Programmieren von oben Informelle Einführung © APSIS GmbH

Vorwort

Die Zeiten des Programmierens sind vorbei.

Während vor einem Jahrzehnt Informatiker mit intensiven Programmierkenntnissen durchaus gute Berufschancen hatten, sind heute solche nicht mehr gefragt. Nur ein kleiner Teil der eingestellten Computerspezialisten beschäftigen sich mit der Formulierung neuer Algorithmen. Die überwiegende Anzahl wird eingesetzt, um vorhandene Hard- und Softwarebausteine (sog. Standardlösungen) zusammenzustecken und den Bedürfnissen des Arbeitgebers anzupassen. Sie müssen das Innenleben dieser Bausteine nicht kennen - sie könnten es gar nicht, da sie eine so große Anzahl von ihnen einsetzen. Sie betrachten nur ihr Äußeres, eine Art Bedienungsanleitung, ihre Schnittstelle zur Umgebung. Sie müssen verstehen, welche Teile dieser Schnittstelle für die gegebene Aufgabe relevant sind und wie sie mit anderen Bausteinen zusammengefügt werden kann. Das traditionelle Programmieren von Verzweigungen und Schleifen, Bits und Bytes, Integers und Charakters, kommt nur am Rande vor.

Diese Erfahrung ist die Quelle des Konzepts, das diesem Lehrbuch zu Grunde liegt, Programmiersprachen anders als bisher zu unterrichten: Im Mittelpunkt des Objektorientierten Programmieren von oben sollen nicht mehr die sprachlichen Strukturen sondern das Zusammenfügen vorhandener Programmbausteine stehen. Dies bedeutet einerseits, dass der Lehrling zu Beginn mit den "höheren" Sprachkonzepten (wie Module, Klassen, generische Einheiten, usw.) konfrontiert wird. Andererseits charakterisiert der Ausdruck "von oben" auch das Programmierparadigma: Während man konventionell überwiegend mit Hilfe der "niedrigen" Sprachelemente (wie Bits, Bytes, Ganzzahlen, Verzweigungen, Schleifen) programmiert, fördert das Programmieren von oben das abstrakte Denken durch die Benutzung der Schnittstellen der Bausteine, ohne ihre Interna zu kennen.

Auf der niedrigen Ebene sollte man demnach nur dann programmieren, wenn keine geeigneten Bausteine vorhanden sind. Somit entspricht es durchaus dem gängigen Trend der modernen Softwareentwicklung: Das Programmieren im Kleinen sollte demnach reduziert und das Programmieren im Großen betont werden. Das projektübergreifende Programmieren - man könnte es Programmieren im sehr Großen nennen - steckt heute noch in Kinderschuhen, auch wenn die Entwicklung in diese Richtung (z.B. OLE, Frameworks, usw.) absehbar ist.

Als Basis für diese Vorgehensweise wurde die Sprache Object Pascal ausgewählt. Die Ursache hierfür ist, dass ihr Vorgänger, Turbo Pascal, eine der populärsten Programmiersprachen ist. Ein Grund für ihre Verbreitung mag ihre Flexibilität sein. Der Programmierer hat mehr Möglichkeiten, seine kreativen Ideen zum Ausdruck zu bringen, als bei den meisten anderen Sprachen. Die in Turbo Pascal geschriebenen Programme sind oft fast genauso schnell, als ob sie auf einer maschinennahen Sprache geschrieben worden wären.

Sie stammt aus der Sprache Standard Pascal, die von Nikolaus Wirth an der ETH Zürich Ende der 70-er Jahre entwickelt wurde. Diese wurde primär zu Unterrichtszwecken gebraucht und gewann bald Verbreitung; vor allem in den Schulen löste sie Basic als Unterrichtssprache ab. In der Zwischenzeit wurde sie von ihrem Schöpfer durch neuere Sprachen wie Modula und Oberon abgelöst; Standard Pascal ist aus der Mode, aber die von der Firma Borland weiterentwickelte Versionen von Turbo Pascal verloren nichts an ihrer Popularität. Einige Gründe hierfür sind der schnelle Compiler, die integrierte Entwicklungsumgebung, die mitgelieferte, reiche Bibliothek und natürlich auch die preiswerte Schulversionen. Die angekündigten neuen Varianten werden mit hoher Erwartung empfangen und erfüllen oft die Benutzerwünsche.

Es gibt aber auch fachliche Einwände: Sie sei nicht wissenschaftlich entwickelt worden sondern organisch gewachsen, daher nicht ausreichend gegründet, unsicher.

Weil der Kreativität des Programmierers kaum Grenzen gesetzt werden, ist es auch sehr leicht, in Turbo Pascal Fehler zu machen. Leistungsfähige und erfahrene Systementwickler kommen damit relativ gut zurecht, aber die Qualität der erstellten Software leidet oft daran, dass die Sprache zu wenig Einschränkungen beinhaltet.

Diese Erfahrungen haben zu Entwicklungen anderer Sprachen wie Ada geführt, die mehr Programmierdisziplin erzwingen. Weil es aber so unbequem ist, diszipliniert zu programmieren, haben sie sich kaum durchgesetzt. Wenn überhaupt, dann dort, wo die Bedeutung der Disziplin bekannt ist: beim Militär oder in sicherheitsrelevanten Aufgabenbereichen wie der Flug- oder Atomindustrie.

Object Pascal, die Weiterentwicklung von Turbo Pascal, stellt eine Art Zwischenlösung dar. Einerseits behält sie, als Obermenge von Pascal, ihre ganze Flexibilität. Andererseits ermöglicht sie denen, die qualitative Software erstellen möchten, nur die zuverlässigen Sprachelemente zu benutzen.

Leider stellt so die Sprache das theoretisch mögliche Qualitätsminimum immer noch nicht sicher; es liegt nach wie vor im Ermessen des Programmierers, wie weit er die neuen Möglichkeiten für Einschränkungen nutzt oder sich die vollständige Kontrolle über seine eigene Freiheit behält. Somit bleibt für zukünftige Pascal-Programmierer die Erziehung zur Selbstdisziplin im Rahmen ihrer Ausbildung die einzige Chance.

In diesem Lehrbuch wird der Versuch unternommen, Pascal auf unkonventionelle Weise zu unterrichten. Es werden weniger die Möglichkeiten der Sprache vorgestellt, vielmehr eine - nach Meinung des Autors vernünftige - Art von Programmierstil und -denken, und der Weg, wie dies in Pascal ausgedrückt werden kann. So können dem Studenten schon zu Anfang Konzepte offensichtlich werden, die sich andere erst als Fortgeschrittene oder gar nicht aneignen. Die Sprachelemente, die traditionell am Anfang des Unterrichts eingeführt werden, werden erst in den hinteren Kapiteln behandelt. Manche, die - nach Meinung des Autors der Programmierdisziplin schaden - werden übergangen.

Daher ist dies kein Lehrbuch für die Sprache Object Pascal. Es ist vielmehr ein Lehrbuch für Programmieren - und zwar nach dem Prinzip "von oben".

Das Lehrbuch wird in Informatikstudiengängen von Hochschulen (so auch an der Technischen Fachhochschule Berlin), an denen das Fach Softwaretechnologie einen Schwerpunkt bildet, zunehmend mit Erfolg eingesetzt. Die übliche Reihenfolge wird also umgekehrt und zuerst werden die "höheren Konzepte" (ohne die einfacheren Sprachelemente) unterrichtet. Die Einführung von Fallunterscheidungen, Wiederholungen und sogar der Ganzzahltypen wird so weit wie möglich hinausgeschoben. Dafür werden Module, abstrakte Datentypen, Klassen und Schablonen gleich zu Anfang benutzt, ohne dabei zu erläutern, was sich hinter ihnen versteckt. Hierdurch soll das abstrakte Denken gefördert werden: Der Gebrauch von vorhandenen Programmbausteinen ist auch ohne die Kenntnisse ihrer Internas möglich. Professionelle Werkzeugkästen (wie etwa ein Unix-Toolbox) unterstützen diese Philosophie.

Der Ansatz zur Vererbungsprogrammierung ist dadurch naturgemäß. Die in der Version 5.5 von Turbo Pascal eingeführten Konzepte für das objektorientierte Programmieren werden dabei genutzt; diese führen zur Idee des wiederverwendbaren Programmierens. Es wird angestrebt, dass sich die Studenten - im Gegensatz zur üblichen Praxis - daran gewöhnen, zuerst nach vorhandenen Bausteinen zu suchen, und erst wenn sie nichts finden, selber zu programmieren.

Das vorgestellte Unterrichtskonzept und Programmierparadigma sind an sich sprachunabhängig. Ein ähnliches Lehrbuch existiert für die Sprache Ada und C++, Versionen andere Sprachen sind in Vorbereitung. Die Objektorientierung ist dabei eine Voraussetzung, auch wenn die Chancen der Vererbung und Polymorphie erst zum Schluss als Höhepunkt wirklich ausgenutzt werden. Nichtsdestotrotz wird der Hauptgedanke des objektorientierten Programmieren, nämlich die Wiederverwendbarkeit, von Anfang an stark betont.

Das Lehrbuch vermittelt keine Fähigkeiten zur Algorithmisierung; komplexe Ablaufvorgänge müssen in anderen Rahmen erlernt werden. Ebenfalls werden kaum Kenntnisse zum Entwurf einer Modul- oder Klassenhierarchie unterrichtet; die Schnittstellen werden als gegeben vorausgesetzt. Es wird nur das Handwerkszeug vorgestellt, wie vorhandene Bausteine zusammengefügt werden können.

Eine Voraussetzung für die erfolgreiche Arbeit mit dem Lehrbuch ist das Vorhandensein eines Rechners mit einer Object-Pascal-Entwicklungsumgebung, auf dem die Übungen durchgeführt werden können. Der Compiler soll die Ausnahmebehandlung nach der ANSI-Spezifikation (try, catch, throw) übersetzen können. Borland's Delphi-Compiler entspricht diesen Anforderungen.

Diesem Buch liegt eine Begleitdiskette bei. Es enthält alle im Text aufgeführten Beispielprogramme und die Musterlösungen für die Übungsaufgaben. Darüber hinaus enthält es einen Satz von Programmbausteinen, die für die vorgestellten Konzepte notwendig sind. Sie liegen sowohl in Form von Bibliotheksdateien, wie auch in Quellformat vor. Die Bibliotheksdateien können von vielen DOS-basierten Pascal-Übersetzern verarbeitet werden. Für andere Betriebssysteme und Compiler müssen die Quellprogramme mit Hilfe der vorliegenden Kommandodateien übersetzt und u.U. angepasst werden. Die Dienstprogramme auf der Begleitdiskette, z.B. ein Bildschirmobjektgenerator, laufen ebenfalls unter DOS; für andere Betriebssysteme müssen die Quellprogramme neu übersetzt und gebunden werden. Anweisungen hierfür wurden in der Datei LIESMICH.TXT aufgelistet.

Abgesehen von den anfänglichen Installationsproblemen ist das Buch auch fürs Selbststudium geeignet. Kenntnisse in Pascal oder in anderen Programmiersprachen stellen zwar Hindernisse dar, sie können aber bewusst überwunden werden.

Die Terminologie des Lehrbuches ist selbstgewählt; sie entspricht nur stellenweise dem üblichen Sprachgebrauch. Auf die Abweichungen wird jedoch immer hingewiesen.


Inhaltsverzeichnis Inhaltsverzeichnis Objektorientiertes Programmieren von oben Informelle Einführung © APSIS GmbH