22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!