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.

Klassen sind rein statische Beschreibungen einer Menge möglicher Objekte. Sie beschreiben die<br />

Struktur <strong>der</strong> möglichen Objekte durch Attribute und mögliche Operationen auf den Objekten<br />

durch Routinen. Attribute und Routinen bilden zusammen die Merkmale (Features) einer Klasse.<br />

Im Programmtext von Softwaresystemen sind nur die Klassen sichtbar.<br />

Objekte sind Laufzeitelemente, die während <strong>der</strong> Ausführung eines Softwaresystems erzeugt werden.<br />

Jedes Objekt ist ein Exemplar (Instanz) einer Klasse, die auch <strong>der</strong> Typ des Objektes genannt wird.<br />

Die Komponenten eines Objektes entsprechen den Attributen <strong>der</strong>jenigen Klasse, <strong>der</strong>en Instanz es<br />

ist. Zur Laufzeit eines Softwaresystems sind nur die Objekte sichtbar.<br />

Abbildung 3.6: Verhältnis von Klassen und Objekten<br />

an<strong>der</strong>es als ein Konzept, welches eine o<strong>der</strong> mehrere Dienstleistungen an seine Benutzer zur Verfügung stellt<br />

und genauso auf die Dienstleistungen an<strong>der</strong>er Konzepte zurückgreifen kann. Daher ist es sinnvoll, all diese<br />

Konzepte einheitlich als Klassen zu organisieren, was eine modulare Programmierung sehr stark unterstützt.<br />

Ein Softwaresystem ist also nichts an<strong>der</strong>es als eine Sammlung aller zugehörigen Konzepte bzw. Klassen.<br />

Erfahrungsgemäß gibt es oft Probleme, Objekte und Klassen auseinan<strong>der</strong>zuhalten. Wir fassen daher die wichtigsten<br />

Erkenntnisse in Abbildung 3.6 zusammen.<br />

3.2.3 Typen und Verweise<br />

Eiffel ist eine statisch getypte Sprache. Das bedeutet, daß jedes Attribut (und auch jede Routine) mit einem<br />

eindeutigen Datentyp deklariert werden muß, zu dem dieses Attribut gehören soll. Die Attribute <strong>der</strong> Klasse<br />

PERSON in Abbildung 3.5 konnten alle mit den vordefinierten Datentypen INTEGER und STRING definiert<br />

werden. Dies ist aber normalerweise nicht <strong>der</strong> Fall, wie das Beispiel <strong>der</strong> Klasse aller Bücher zeigt:<br />

class BUCH feature<br />

autor: PERSON;<br />

titel: STRING;<br />

erscheinungsdatum: INTEGER;<br />

verlag: STRING;<br />

anzahl seiten, kennung: INTEGER<br />

end -- class BUCH<br />

Abbildung 3.7: Klassendefinition mit implizitem Verweis<br />

Das Attribut autor hat als Datentyp die soeben definierte Klasse PERSON. Da wir, wie in Abschnitt 3.1.2<br />

besprochen, keine Objekte innerhalb von Objekten zulassen wollen, bedeutet diese Deklaration, daß die zum<br />

Attribut autor zugehörige Komponente eines Buchobjekts einen Verweis auf ein Objekt vom Typ PERSON ist.<br />

Eine beson<strong>der</strong>e Kennzeichnung des Datentyps für das Attribut autor als ein Verweistyp (wie etwa in Pascal)<br />

ist dafür nicht erfor<strong>der</strong>lich, da sich diese Tatsache aus dem Kontext ergibt. Sie wird deshalb auch unterlassen. 7<br />

Attribute, <strong>der</strong>en Typ kein einfacher Datentyp ist, beschreiben Verweise auf Objekte dieses Typs<br />

Es gibt also in Eiffel nur zwei Arten von Datentypen: einfache Typen (INTEGER, BOOLEAN, CHARACTER, REAL, und<br />

DOUBLE) und Klassentypen. Klassentypen müssen durch Klassendeklarationen definiert werden und gehören<br />

nicht zum Basistypsystem von Eiffel.<br />

Von dieser Regel gibt es allerdings eine Ausnahme. Neben <strong>der</strong> eigentlichen Programmiersprache, die aus den<br />

in “Eiffel the language” [Meyer, 1992] beschriebenen Grundkonstrukten besteht, enthält die von einem Compiler<br />

zur verfügung gestellte Programmierumgebung <strong>der</strong> Sprache Eiffel eine Reihe von Programmbibliotheken<br />

7 Die Unterlassung dieser Kennzeichnung von Verweisen ergibt sich aus <strong>der</strong> objektorientierten Denkweise: aus <strong>der</strong> Sicht des<br />

Objekts selbst ist die entsprechende Komponente tatsächlich ein an<strong>der</strong>es Objekt und kein Verweis. Verweise sind nur die rechnerinterne<br />

Methode die Konsistenz zwischen Objekten sicherzustellen, welche dasselbe Objekt als Komponente beinhalten.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!