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