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.
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.