Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
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