22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Wenn je<strong>der</strong> Modul als Klasse definiert ist, so ist dies automatisch gewährleistet. Ist die Modularisierung<br />

über Prozeduren definiert, wie in Pascal, dann könnten die beiden über globale Variable eine Verbindung<br />

haben, die aber nicht explizit erkennbar ist. Aber nicht nur die Tatsache <strong>der</strong> Kooperation muß<br />

beschrieben, son<strong>der</strong>n auch die Wirkung <strong>der</strong> Merkmale.<br />

Geheimnisprinzip: Die Schnittstelle ist die einzige Information über den Modul. Insbeson<strong>der</strong>e, wie die<br />

Kontrakte realisiert sind, bleibt den Klienten verborgen. Ist die Schnittstelle minimal, so ist für die Implementierung<br />

und daher auch für Alternativimplementierungen <strong>der</strong> maximale Freiheitsgrad vorhanden.<br />

Insbeson<strong>der</strong>e Än<strong>der</strong>ungen, seien sie durch Fehler erzwungen o<strong>der</strong> durch Verbesserungen <strong>der</strong> Effizienz<br />

zweckmäßig, erfor<strong>der</strong>n keine Än<strong>der</strong>ungen im restlichen System.<br />

In Eiffel gibt es keine globalen Variablen zwischen Klassen, daher ist das Geheimnisprinzip automatisch<br />

bei minimalen Schnittstellen gewährleistet. Bei <strong>der</strong> Modularisierung über Prozeduren mit globalen Variablen<br />

(wie C und Pascal üblich) wird das Geheimnisprinzip zwangsläufig verletzt mit <strong>der</strong> Konsequenz,<br />

daß die Wartungskosten einen hohen Anteil an den Entwicklungskosten ausmachen.<br />

Die Klärung <strong>der</strong> Frage, wie nun ein Softwaresystem unter Beachtung dieser Kriterien entworfen und systematisch<br />

implementiert werden kann, wird das Thema des nächsten Kapitels werden.<br />

3.11 Sprachbeschreibung<br />

Wir wollen nun versuchen, eine präzise Sprachbeschreibung für die bisher eingeführten Konstrukte zu geben.<br />

Sie ist hilfreich zum Verständnis einer Programmiersprache, aber keineswegs notwendig. Sie dient lediglich<br />

dazu, offengebliebene Fragen <strong>der</strong> informalen Beschreibung zu beantworten.<br />

Die Struktur dieser Sprachbeschreibung entspricht <strong>der</strong> in Kapitel 2 gegebenen Methodik bei <strong>der</strong> Einführung<br />

in die Logik: zuerst wird die Syntax beschrieben, anschließend die Kontextbedingungen – in <strong>der</strong> Denkweise<br />

von Programmierprachen nennt man dies statische Semantik – und schließlich die dynamische Semantik.<br />

Syntax: Für die Definition <strong>der</strong> Syntax verwenden wir die bereits bekannte Backus-Naur-Form. Sie hat den<br />

Zweck, die Struktur von Programmen in eindeutiger Weise als Basis für die Beschreibung <strong>der</strong> Semantik<br />

<strong>der</strong> Programmiersprache festzulegen.<br />

Die Syntax ist die Basis jeden Verfahrens zur Strukturanalyse (Syntaxanalyse) von Programmen, also<br />

<strong>der</strong> notwendigen ersten Phase einer Übersetzung von Eiffel-Programmen in die Maschinensprache.<br />

statische Semantik: Ergänzend zur Struktur <strong>der</strong> Sprache beschreibt die statische Semantik zusätzlichen-<br />

Bedingungen für eine einheitliche Verwendung von Namen in einem sinnvollen Kontext. Hierzu gehören<br />

Sichtbarkeitsregeln und Verträglichkeitsbedingungen.<br />

Sichtbarkeitsregeln definieren eine Zuordnung von Bezeichnern (Variablen) zu ihren Typen (also REAL,<br />

INTEGER, PERSON etc.), sowie den Geltungsbereich dieser Zuordnung im Programmtext. In <strong>der</strong> Prädikatenlogik<br />

war dies zum Beispiel <strong>der</strong> Bereich, in dem eine allquantifizierte Variable gebunden ist.<br />

Typverträglichkeitsbedingungen beschreiben die zulässigen Kombinationen von Operatoren und Typen<br />

<strong>der</strong> Operanden. So verlangt zum Beipiel die Addition genau zwei Argumente und kann nicht auf Elemente<br />

vom Typ CHARACTER angewandt werden. Dies verbietet zuweilen auch Kurzschreibweisen wie 2

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!