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.

<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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!