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.

Es sei an dieser Stelle angemerkt, daß die genaue Typisierung mancher Argumente nach einer Datenstruktur<br />

verlangt, die üblicherweise nicht zu den vordefinierten Typen <strong>der</strong> Eiffel-Basisbibliothek gehört. Zur Speicherung<br />

<strong>der</strong> Bücher und Entleiher einer Bibliothek sowie <strong>der</strong> Autoren des Informationssystems benötigen wir eine<br />

generische Klasse, die dem mathematischen Konzept <strong>der</strong> Menge entspricht. Dies ist nötig, weil wir beliebig<br />

viele Bücher, Entleiher und Autoren zulassen wollen, Elemente hinzufügen, nach Kriterien wie Autor und<br />

Titel (und ggf. Entleihstatus) suchen, und entnehmen wollen. Indizes, wie Fel<strong>der</strong> sie anbieten, werden nicht<br />

gebraucht. Stattdessen muß gesichert sein, daß Elemente nicht doppelt vorkommen. Aus diesem Grunde muß<br />

zu den obengenannten problemspezifischen Klassen eine generische Klasse SET hinzugefügt werden, <strong>der</strong>en<br />

Dienstleistungen sich aus den Anfor<strong>der</strong>ungen des Problems und den üblichen Mengenoperationen ergeben.<br />

4.1.6.3 Vollständige Klassenstruktur<br />

An dieser Stelle müsste nun die obige Beschreibung in eine vollständig beschriebene Struktur von Eiffel-Klassen<br />

umgesetzt werden, in <strong>der</strong> alle Dienstleistungen, die für die Modellierung des Problems relevanten Attribute<br />

(z.B. die Komponenten eines Buches) und eventuell weitere für die Verarbeitung hilfreiche features explizit<br />

genannt, typisiert und mit Vor- und Nachbedingungen versehen sind. Der selektive Export gemäß <strong>der</strong> oben<br />

genannten Kunden wäre explizit zu vereinbaren und Erbbeziehungen wären in inherit-Klauseln zu formulieren.<br />

Es würde den Rahmen dieses Skriptes sprengen, dieses Beispiel bis ins letzte Detail auszuführen. Wir belassen<br />

es daher bei <strong>der</strong> bisher gegebenen Feinspezifikation, die mit entsprechendem Platz- und Zeitaufwand (aber<br />

ohne weitere Entwurfsüberlegungen) in eine vollständige Klassenstruktur umgesetzt werden kann.<br />

4.1.7 Ästhetik <strong>der</strong> Programmierung<br />

Ein letzter Aspekt, <strong>der</strong> beim Entwurf – genauso wie bei <strong>der</strong> Implementierung – eine Rolle spielen sollte, ist<br />

eher ästhetischer Natur. Es gibt viele Programme, die ihre Aufgabe erfüllen, aber unter diesen gibt es welche,<br />

<strong>der</strong>en Vorgehensweise man als “schlechten Programmierstil” bezeichnen würde.<br />

Was ein guter und was ein schlechter Programmierstil ist, läßt sich nicht in voller Allgemeinheit sagen, da<br />

die Ansichten darüber zum Teil auseinan<strong>der</strong>driften. Manche halten Programme für gut, wenn sie nur wenige<br />

Klassen und Routinen benötigen, kurzen Code haben, o<strong>der</strong> durch geschickte Anordnung von Anweisungen<br />

sehr effizient sind. An<strong>der</strong>e bevorzugen Programme, in denen <strong>der</strong> Code einer einzelnen Routine kurz ist.<br />

Nach unserer Ansicht sollte ein Entwurf so gestaltet sein, daß seine Struktur für An<strong>der</strong>e durchschaubar<br />

bleibt und die wesentlichen Ideen ohne große Erklärungen erkennbar sind. Dies ist meist <strong>der</strong> Fall, wenn ein<br />

klarer Bezug zur realen Welt zu erkennen bleibt, die modelliert wird, wobei auch die Namensgebung für<br />

Klassen, features und Parameter eine nicht unwesentliche Rolle spielt. Auch bedeutet dies, daß Zusicherungen<br />

– die ja auch einen Teil <strong>der</strong> Dokumentation eines Programms darstellen – nur features benutzen, die auch<br />

exportiert werden. 8 Interessanterweise stimmen die Beurteilungen konkreter vorgegebener Programme durch<br />

verschiedene Personen meist überein 9 und deshalb ist es auch hier wichtig, Erfahrungen zu sammeln und<br />

eigene Programme <strong>der</strong> Kritik an<strong>der</strong>er zu stellen, um die eigene Beurteilungsfähigkeit zu schärfen und im<br />

Laufe <strong>der</strong> Zeit “bessere” Programme zu schreiben.<br />

Ästhetik ist ein Kriterium, das zuweilen auf Kosten <strong>der</strong> Effizienz geht, aber bedeutend ist für das Verständnis.<br />

Dies geht Hand in Hand damit, daß man die Korrektheit eines Programms leicht einsehen und ggf. auch leicht<br />

beweisen kann. Oft versteht man ein Programm viel besser, wenn man die Gründe aufgeschrieben hat, warum<br />

<strong>der</strong> Entwurf und die implementierte Methode auch tatsächlich funktioniert. Dies leitet uns über zum nächsten<br />

Thema, <strong>der</strong> Implementierung von Programmen und dem Nachweis ihrer Korrektheit.<br />

8 Dies wird von Eiffel nicht kontrolliert und lei<strong>der</strong> sind auch die Musterlösungen zuweilen von diesem Prinzip abgewichen.<br />

9 Sie sollten während einer Übungstunde einmal Kriterien zusammentragen, ausdiskutieren und dann eine Liste <strong>der</strong> Kriterien<br />

für einen guten Programmierstil, zusammenstellen, auf die Sie sich einigen können.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!