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.

und diese erzeugten Objekte mit Verweisen zu verbinden. Hierzu gibt es in Eiffel eine Erzeugungsprozedur,<br />

die mit !! bezeichnet wird. Um zum Beispiel ein neues Objekt vom Typ PERSON zu erzeugen und<br />

mit <strong>der</strong> Komponente autor eines gegebenen Buchobjektes zu verbinden schreibt man:<br />

!!autor<br />

Eine Erzeugungsoperation versetzt den Verweis aus dem leeren Zustand Void in den Zustand created<br />

(erzeugt) und <strong>der</strong> Verweis ist genau dann in diesem Zustand, wenn er mit einem Objekt verbunden ist.<br />

Auch das neu erzeugte Objekt muß natürlich einen Anfangszustand haben. Aus diesem Grunde ist es<br />

nötig, nicht nur für Verweise son<strong>der</strong>n auch für alle an<strong>der</strong>en Komponenten eines Objektes einen Initialwert<br />

festzulegen, denn es macht wenig Sinn, wenn man diesen Wert dem Zufall überläßt. In Eiffel gilt die<br />

Konvention, daß Komponenten eines Objektes gemäß dem Typ des entsprechenden Attributs nach <strong>der</strong><br />

Tabelle in Abbildung 3.12 initialisiert werden.<br />

Datentyp Initialwert<br />

INTEGER 0<br />

BOOLEAN false<br />

CHARACTER ASCII-Null-Symbol<br />

REAL 0.0<br />

DOUBLE 0.0<br />

Klassentypen Void<br />

Abbildung 3.12: Standardinitialwerte in Abhängigkeit vom Datentyp<br />

Es besteht auch die Möglichkeit, in einer Klassendeklaration vom Standard abweichende Initialwerte für<br />

die Erzeugung zu vereinbaren. Darauf werden wir in Abschnitt 3.3.6 zurückkommen.<br />

Objekte existieren nicht, solange sie nicht explizit zur Laufzeit eines Systems durch eine Erzeugungsoperation<br />

erzeugt wurden. Auf diese Art wird vermieden, daß Objekte bei <strong>der</strong> Abarbeitung <strong>der</strong> Deklaration<br />

automatisch erzeugt werden müssen. Dieses würde nämlich bei Objekten einer Klasse mit Selbstreferenz,<br />

z.B. <strong>der</strong> Klasse PERSON in Abbildung 3.8, sofort dazu führen, daß immer wie<strong>der</strong> neue Objekte<br />

erzeugt werden müssen, da zu je<strong>der</strong> Person ja Vater und Mutter benötigt werden. Wir wären also in<br />

einer unendlichen Schleife, bevor wir überhaupt mit <strong>der</strong> eigentlichen Verarbeitung anfangen könnten.<br />

Zuweisung: Wie jede an<strong>der</strong>e Programmiersprache kennt Eiffel das Konzept <strong>der</strong> Zuweisung von Werten an<br />

die Komponenten eines Objektes. Diese Anweisung wird mit dem Symbol := ausgedrückt. Der Befehl<br />

erscheinungsdatum := 1993<br />

weist also <strong>der</strong> Komponente eines gegebenen Buchobjekts, die zu dem Attribut erscheinungsdatum<br />

gehört, den Wert 1993 zu.<br />

Wichtig ist, daß bei <strong>der</strong> Zuweisung von Objekten zu einer Komponente nicht etwa das Objekt selbst,<br />

son<strong>der</strong>n nur <strong>der</strong> Verweis auf dieses Objekt zugewiesen wird. Dies entspringt wie<strong>der</strong> <strong>der</strong> in Abschnitt 3.2.3<br />

besprochenen Denkweise, daß jede Bearbeitung nichtelementarer Objekte ausschließlich über Verweise<br />

geschieht. Bezeichnet also person 1 ein Objekt vom Typ Person, dann weist <strong>der</strong> Befehl<br />

autor := person 1<br />

in Wirklichkeit <strong>der</strong> Komponente autor den gleichen Verweis zu, <strong>der</strong> auch in person 1 eingetragen ist,<br />

denn genau besehen ist person 1 ein Verweis auf das Objekt und nicht das Objekt selbst.<br />

Für die Zuweisungen von Werten an die Komponenten eines Objektes gibt es allerdings in Eiffel aufgrund<br />

des Geheimnisprinzips (siehe Abschnitt 3.4) sehr starke Einschränkungen. Erlaubt ist eine Zuweisung<br />

nur innerhalb einer Klassendefinition. Von außen ist eine Verän<strong>der</strong>ung nur über Prozeduren möglich,<br />

die durch die Klasse zur Verfügung gestellt werden.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!