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.
<strong>der</strong> Komponente vornamen (durch Suche nach Leerzeichen) zu extrahieren und dann <strong>der</strong>en Größe mithilfe<br />
gewöhnlicher Listenfunktionen zu berechnen. Hierzu ist es notwendig, lokale Variablen zu vereinbaren, also Variablen,<br />
die nur für interne Berechnungen <strong>der</strong> Funktion anzahl vornamen verwendet werden. Die Verwendung<br />
lokaler Variablen entspricht <strong>der</strong> Verwendung von Schmierzetteln bei <strong>der</strong> Lösung komplizierterer Aufgaben –<br />
sie werden nur zum Finden <strong>der</strong> Lösung gebraucht, gehören aber nicht zur eigentlichen Lösung dazu. Lokale<br />
Variablen machen die Implementierung von Routinen übersichtlicher und oft effizienter.<br />
anzahl vornamen: INTEGER is<br />
-- Anzahl <strong>der</strong> Vornamen bestimmen<br />
local<br />
vornamen liste : ARRAY[STRING]<br />
do<br />
vornamen liste := einzelne Vornamen aus vornamen<br />
Result := Länge <strong>der</strong> Liste vornamen liste<br />
end; -- anzahl vornamen<br />
Abbildung 3.11: Routinendeklaration mit lokalen Variablen<br />
In Eiffel werden lokale Variablen durch das (optionale) Schlüsselwort local am Anfang eines Routinenrumpfes<br />
deklariert. In Abbildung 3.11 wird also innerhalb <strong>der</strong> Routine anzahl vornamen eine lokale Variable vornamen liste<br />
vom Typ ARRAY[STRING] definiert (über arrays sprechen wir im Abschnitt 3.6.3). Diese Variable ist nur innerhalb<br />
<strong>der</strong> Routine anzahl vornamen bekannt und kann auch innerhalb <strong>der</strong> Klasse PERSON von keiner an<strong>der</strong>en<br />
Routine benutzt werden.<br />
Lokale Variablen sind eine weitere Art von Größen, die innerhalb von Eiffel verwendet werden, um Objekte<br />
zu bezeichnen. Die folgende Definition summiert alle Formen, die eine Größe annehmen kann.<br />
Definition 3.3.3 (Entities / Größen) Eine Größe (entity) ist ein Bezeichner für Objekte, <strong>der</strong> folgende<br />
Formen annehmen kann<br />
• ein Klassenattribut<br />
• eine lokale Variable einer Routine<br />
• ein formales Argument einer Routine<br />
• Result, eine vordefinierte Größe für das Ergebnis einer Funktion.<br />
3.3.4 Standardoperationen für alle Klassen<br />
Zusätzlich zu den in einer Klasse definierten Routinen gibt es in Eiffel eine Reihe vordefinierter Operationen,<br />
die in allen Klassen angewandt werden können(, was natürlich auch bedeutet, daß <strong>der</strong>en Namen nicht mehr für<br />
an<strong>der</strong>e Routinen benutzt werden können). Diese werden benutzt zur Erzeugung neuer Objekte einer Klasse,<br />
zur Zuweisung von Werten, zum Zugriff auf Komponenten, zur Auflösung eines Verweises auf ein Objekt,<br />
zur Überprüfung des Verweiszustandes, Duplizierung von Objekten, zum Kopieren von Objektzuständen und<br />
zum Vergleich von Objekten.<br />
Erzeugung von Objekten: In Abbildung 3.7 hatten wir die Klasse BUCH mit einem Attribut autor vom<br />
Typ PERSON definiert (BUCH ist also Kunde von PERSON). Da PERSON selbst ein Klassentyp ist, enthalten<br />
alle Objekte <strong>der</strong> Klasse BUCH an <strong>der</strong> entsprechenden Komponente einen Verweis. Solch ein Verweis kann<br />
entwe<strong>der</strong> auf ein konkretes Objekt zeigen o<strong>der</strong> leer sein – also den Wert Void haben.<br />
Sinnvollerweise ist ein solcher Verweis leer, solange man noch nichts an<strong>der</strong>es festgelegt hat. Um dies aber<br />
zu än<strong>der</strong>n, könnte man <strong>der</strong> entsprechenden Komponente einen Wert zuweisen (siehe unten). Aber da<br />
Objekte nicht von selbst entstehen können, muß man irgendwann damit anfangen, Objekte zu erzeugen