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.

Die eigentliche Montage eines Systems, also <strong>der</strong> Prozeß des Zusammenbindens einer Menge von Klassen zu<br />

einem Softwaresystem zur Lösung einer bestimmten Aufgabe, muß <strong>der</strong> letzte Schritt im Softwareentwicklungsprozeß<br />

bleiben. Systeme (also Hauptprogramme) sind daher kein Sprachkonzept von Eiffel, son<strong>der</strong>n nur auf<br />

<strong>der</strong> Ebene des Betriebssystems bekannt und mit ausführbaren Prozessen verbunden. Ein System wird nur<br />

dann erzeugt, wenn man aus <strong>der</strong> Ansammlung von Klassen einen einzeln ausführbaren Prozeß benötigt.<br />

Ein konkretes System ist gekennzeichnet durch eine sogenannte Wurzel (root-class). Das ist diejenige Klasse,<br />

welche den gewünschten Prozeß initiieren soll. Dies geschieht durch die Ausführung <strong>der</strong> Initialisierungsprozedur<br />

<strong>der</strong> Wurzelklasse, die normalerweise direkt o<strong>der</strong> indirekt Objekte aus ihrer eigenen und aus an<strong>der</strong>en<br />

Klassen erzeugt und weitere Routinen (ggf. mit Ein- und Ausgabe) anstößt, die dann ihrerseits Objekte<br />

erzeugen und weitere Routinen aufrufen usw. . In <strong>der</strong> konventionellen Denkweise entspricht also die Initialisierungsprozedur<br />

<strong>der</strong> Wurzelklasse dem klassischen Hauptprogramm. Im Unterschied zu diesem wird sie<br />

jedoch erst zum Zeitpunkt <strong>der</strong> Montage festgelegt.<br />

Wie alle an<strong>der</strong>en Prozeduren, darf auch die Initialisierungsprozedur <strong>der</strong> Wurzelklasse formale Argumente<br />

haben. Die zugehörigen aktuellen Werte müssen dann bei <strong>der</strong> Ausführung des Systems angegeben werden.<br />

Da das System als Prozeß des Betriebssystems – also von außerhalb von Eiffel – aufgerufen wird, müssen alle<br />

Argumente dieser Initialisierungsprozedur von einem einfachen Datentyp o<strong>der</strong> vom Typ STRING sein.<br />

Um ein System tatsächlich zu montieren und zu aktivieren, muß man zunächst angeben, in welcher Bibliothek<br />

das System liegt und welche Klasse als Wurzelklasse gelten soll. Beide Beschreibungen werden in einem<br />

System Descriction File (kurz SDF) angegeben. Die genaue Syntax des SDF hängt ab von dem tatsächlich<br />

verwendeten Compiler. Die Variationen sind jedoch gering. Ein typisches System Descriction File beginnt mit<br />

ROOT: Name <strong>der</strong> root class (Kleinbuchstaben!!)<br />

UNIVERSE: Name <strong>der</strong> Bibliothek (directory name)<br />

. sonstige Compiler-Optionen<br />

Das Montagekommando des Betriebssystems, welches das SDF verarbeitet, heißt in Unix üblicherweise es<br />

(für Eiffel System) 34 . Es erwartet, das SDF unter einem bestimmten Namen (z.B. .eiffel) im aktuellen<br />

directory vorzufinden. Bei Ausführung sucht es die für die Montage des Systems notwendigen Klassen aus <strong>der</strong><br />

Bibliothek heraus, übersetzt sie (genauer gesagt nur diejenigen, <strong>der</strong>en Übersetzung nicht mehr aktuell ist)<br />

und bindet sie zusammen. Das fertig montierte System wird dann als ausführbares Unix-Kommando unter<br />

dem Namen <strong>der</strong> Wurzelklasse im aktuellen directory abgelegt. Dieses Kommando kann dann zusammen mit<br />

den aktuellen Parametern für die Initialisierungsprozedur aufgerufen und ausgeführt werden.<br />

Beispiel 3.9.1<br />

Für das Bibliotheken-Verwaltungssystem wäre es sinnvoll, Klassen aufzustellen, welche Bücher, Bibliotheken,<br />

die verschiedenen Entleiher, die Autoreninformationen, die einzelnden Transaktionen, die Datumsverwaltung,<br />

Ein- und Ausgaben (Menüs), Lesen und Schreiben von Dateien, welche den <strong>der</strong>zeitigen<br />

Bibliothekenbestand und an<strong>der</strong>e bekannte Verwaltungsdaten enthalten, usw. verarbeiten.<br />

Um diese zu einem System zusammenzusetzen, könnte man dann eine Wurzelklasse mit dem Namen<br />

BIB VERWALT hinzufügen, <strong>der</strong>en Initialisierungsprozedur ein Datum in Form von Tag, Monat und Jahr<br />

(jeweils vom Typ INTEGER) erwartet, das Lesen diverser Dateien veranlaßt, und dann in ein Menü überwechselt,<br />

über das dann die Transaktionen und ggf. sonstige Verän<strong>der</strong>ungen ausgelöst werden. Wichtig<br />

ist dabei, daß in BIB VERWALT nur Aktionen an<strong>der</strong>er Klassen angestoßen werden und nicht etwa eigene<br />

Routinen geschrieben werden. Für die Montage gibt man im SDF also an<br />

ROOT: bib verwalt<br />

. sonstige Compiler-Optionen<br />

34 Es mag Gründe geben, das Kommando in Unix an<strong>der</strong>s zu benennen, zum Beispiel, wenn mehrere Versionen des Eiffel<br />

Compilers vorhanden sind. Dies ist dann jedoch nur eine Umbenennung im Rahmen des Betriebssystems, die keinen Einfluß auf<br />

das sonstige Verhalten des Compilers hat. Für Details dieser Art sollte man unbedingt die lokalen Handbücher konsultieren.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!