Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Dies erzeugt also ein Unix-Kommando bib verwalt, das dann zum Beispiel mit<br />
bib verwalt 17 12 1993<br />
aufgerufen werden kann und den Verwaltungsablauf <strong>der</strong> Bibliotheken am 17.12.1993 startet.<br />
Die in diesem Beispiel erläuterte Vorgehensweise zeigt, daß die meisten Eiffel Klassen von den Systemen, in<br />
denen sie agieren, völlig unabhängig bleiben. Abgesehen von <strong>der</strong> verhältnismäßig kleinen Wurzelklasse können<br />
fast alle an<strong>der</strong>en Klassen in völlig verschiedenartigen Systemen wie<strong>der</strong>verwendet werden – vorausgesetzt sie<br />
sind modular und mit sauberen Schnittstellen erstellt worden. Dies trifft insbeson<strong>der</strong>e natürlich für Ein- und<br />
Ausgaben, Lesen und Schreiben von Dateien, und ähnliche vielseitig verwendbare Klassen zu und führt insgesamt<br />
zu einer sehr dezentralen Systemarchitektur. Programmierern, die gewohnt sind, zentralistisch (im Sinne<br />
von Hauptprogrammen) zu denken, nötigt dies ein gewisses Umdenken ab 35 . Aus dem Text einer einzelnen<br />
Klasse kann man normalerweise nicht ableiten, wie sich ein System verhält, das auf dieser Klasse aufbaut. Der<br />
Schwerpunkt liegt stattdessen auf den Dienstleistungen, welche die Klasse anbietet. Die Reihenfolge, in <strong>der</strong><br />
diese Dienstleistungen während <strong>der</strong> Ausführung eines Systems verlangt werden, ist ein zweitrangiges Problem.<br />
Diese Tatsache ist <strong>der</strong> Kern des objektorientierten Denkens. Selbst dann, wenn man die vorgesehene Ausführungsreihenfolge<br />
kennt, sollte man keine ernsthaft Entwurfsentscheidung darauf gründen. Nur so kann die<br />
Flexibilität eines Entwurfs erreicht werden. Bei einer dezentralen Struktur ist es leicht, Dienstleistungen zu<br />
än<strong>der</strong>n o<strong>der</strong> hinzuzunehmen. Hatte sich aber <strong>der</strong> Entwurf an einer bestimmten Ausführungsreihenfolge orientiert,<br />
so erhält man vielleicht schneller ein lauffähiges System, aber jede Än<strong>der</strong>ung <strong>der</strong> externen Anfor<strong>der</strong>ungen<br />
wird zu massiven Problemen bei <strong>der</strong> Anpassung des Systems führen.<br />
3.10 Diskussion<br />
Ziel <strong>der</strong> objektorienten Programmierung ist die Modellierung <strong>der</strong> realen Welt. Systeme <strong>der</strong> realen Welt kooperieren<br />
miteinan<strong>der</strong> durch Leistungsangebote (exportierte Merkmale). Für den Klienten einer Leistung ist<br />
es dabei weitgehend unerheblich, wie die gewünschte Leistung zustande kommt (Geheimnisprinzip), außer er<br />
bekommt direkt o<strong>der</strong> indirekt mit Nebenprodukten (Speicherüberlauf, ruinierte Plattenverzeichnisse, Viren<br />
usw.) zu tun, von denen er bei <strong>der</strong> Leistungsbeschreibung (Kontrakt) nichts gehört hat.<br />
[Meyer, 1988] zählt fünf Eigenschaften auf, welche jede Entwurfsmethode und die entsprechende Entwurfsbeschreibungsbzw.<br />
Programmiersprache gewährleisten sollen, um eine gute Modellierung zu ermöglichen:<br />
Zerlegbarkeit in Module: Die Beschreibungsprache ermöglicht die Zerlegung in Einheiten geringerer Komplexität,<br />
die miteinan<strong>der</strong> kooperieren. Obwohl <strong>der</strong> gesamte Beschreibungsaufwand anwächst, ist das<br />
Gesamtsystem durch die Zerlegung in Komponenten (Separation of Concerns) besser verständlich.<br />
Die Verwaltung von Bibliotheken wird zerlegt in BIB VERWALT, BIBLIOTHEK, BUCH, AUTOR, ENTLEIHER,<br />
TRANSAKTION, PERSON usw.<br />
Zusammensetzbarkeit aus Modulen: Die Zerlegung geht natürlich nicht unendlich tief, da jedes System<br />
aus vorgegebenen Einheiten (Datentypen und Anweisungen) einer Programmiersprache zusammengesetzt<br />
werden muß. Wichtig aber ist, daß die Menge <strong>der</strong> bereits vorgegebenen Einheiten (Bibliothek)<br />
laufend ergänzt werden kann, um bei weiteren Entwicklungen, auf diese zurückgreifen zu können und<br />
unnötigen Entwicklungsaufwand zu vermeiden.<br />
PERSON und BUCH könnte in vielen an<strong>der</strong>en Systemen eingebaut werden und die allgemeine Einsatzfähigkeit<br />
von TRANSAKTION und BIBLIOTHEK für an<strong>der</strong>e Verwendungszwecke könnte durch Verallgemeinerungen<br />
(und Vererbungskonzepte) noch erhöht werden.<br />
35 Aus diesem Grunde haben wir in dieser Veranstaltung zunächst mit den Strukturierungskonzepten begonnen. Wir hoffen<br />
damit <strong>der</strong> Gefahr zu entgehen, daß Sie zu sehr mit dem üblichen zentralistisches Denken vertraut werden, das wir Ihnen dann<br />
mühsam wie<strong>der</strong> abgewöhnen müssten.