22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

3.2.2 Klassen in Eiffel<br />

Mit den abstrakten Datentypen haben wir eine mathematische Beschreibungsform gegeben, die es erlaubt,<br />

Klassen von Objekten vollständig, genau und eindeutig zu charakterisieren und dabei gleichzeitig eine Überspezifikation<br />

zu vermeiden. Wir wollen nun zeigen, wie man eine solche Beschreibungsform in einer Programmiersprache<br />

ausdrücken kann.<br />

In <strong>der</strong> Denkweise <strong>der</strong> Programmiersprachen hat sich anstelle des Namens “abstrakter Datentyp” <strong>der</strong> Begriff<br />

“Klasse” zur Beschreibung <strong>der</strong> Gemeinsamkeiten einer Gruppe von Objekten eingebürgert. In Eiffel ist das<br />

Konzept <strong>der</strong> Klasse nahezu identisch mit dem <strong>der</strong> abstrakten Datentypen. Gegenüber <strong>der</strong> mathematischen<br />

Sichtweise än<strong>der</strong>n sich nur einige <strong>der</strong> verwendeten Begriffe und Schlüsselworte.<br />

Die einfachste Form einer Klassendefinition ist etwas ähnliches wie ein Verbundtyp in Pascal, in dem nur die<br />

gemeinsame Struktur einer Gruppe von Objekten festgelegt wird:<br />

class PERSON feature<br />

name, vornamen: STRING;<br />

geburtsjahr, todesjahr: INTEGER;<br />

nationalität: STRING<br />

end -- class PERSON<br />

Abbildung 3.5: Eine einfache Klassendefinition<br />

Die Klasse in Abbildung 3.5 beschreibt die Struktur einer Menge von Objekten, die Instanzen o<strong>der</strong> Exemplare<br />

dieser Klasse genannt werden. Die Klasse erhält den Namen PERSON und stellt Komponenten wie name,<br />

vorname, etc. zur Verfügung. Die Komponenten einer Klasse werden als Dienstleistungen <strong>der</strong> Klasse betrachtet,<br />

die für eventuelle Benutzer dieser Klasse nach außen hin verfügbar sind. Dabei spielt es – von außen<br />

betrachtet – keine Rolle, ob diese Dienstleistungen erbracht werden, indem auf eine abgespeicherte Komponente<br />

zugegriffen wird o<strong>der</strong> indem eine Berechnung (z.B. zur Bestimmung einer eindeutigen internen Kennung)<br />

durchgeführt wird. Diese Sicht deckt sich mit <strong>der</strong> im Abschnitt 3.2.1 angesprochenen Philosophie <strong>der</strong> abstrakten<br />

Datentypen, die alle Dienstleistungen als Funktionen ansieht, von denen einige vielleicht keine Eingaben<br />

benötigen.<br />

Um dieser Sichtweise Rechnung zu tragen, werden in Eiffel alle nach außen hin sichtbaren Dienstleistungen<br />

einer Klasse mit dem Oberbegriff feature 6 bezeichnet. Im einfachsten Fall sind Features nur Attribute, also Bestandteile<br />

von Klassen, die tatsächlich eine Komponente <strong>der</strong> Objekte <strong>der</strong> Klasse bezeichnen. Features können<br />

aber auch an<strong>der</strong>e von <strong>der</strong> Klasse bereitgestellte Dienstleistungen sein, nämlich Routinen, die Operationen auf<br />

den Objekten <strong>der</strong> Klasse beschreiben, wie zum Beispiel die Bestimmung aller <strong>der</strong>zeit verfügbaren (nicht ausgeliehenen)<br />

Bücher, die von einem bestimmten Autor geschrieben wurden. Hierauf werden wir im Abschnitt<br />

3.3 zurückkommen.<br />

Die Schlüsselworte class, feature und end, gedruckt in einem an<strong>der</strong>en Schriftsatz, werden zur syntaktischen<br />

Aufteilung einer Klassendefinition in Klassendeklaration und Deklaration von Features benutzt. Features vom<br />

selben Typ können in Deklaration gruppiert werden. Für die Aneinan<strong>der</strong>reihung von Deklarationen (und später<br />

auch von an<strong>der</strong>en Instruktionen) wird als Trennzeichen das Semikolon “;” verwendet und für Kommentare<br />

<strong>der</strong> doppelte Bindestrich “--”. Es hat sich als gute Konvention bewährt, am Ende einer Klassendefinition den<br />

Namen <strong>der</strong> Klasse im Kommentar zu wie<strong>der</strong>holen.<br />

Klassen sind die Grundkomponenten, aus denen alle Eiffel-Programme aufgebaut werden. Sie beschreiben<br />

nicht nur die Datenstrukturen, die in einem Softwareprodukt verwendet werden, son<strong>der</strong>n ebenso alle Module,<br />

aus denen dieses Softwareprodukt aufgebaut ist – einschließlich dem “Hauptprogramm”. Diese Vorgehensweise<br />

entspricht einer konsequenten Umsetzung <strong>der</strong> objektorientierten Sichtweise. Ein Programm ist nichts<br />

6 Der deutsche Begriff für feature ist Merkmal. Der englische Begriff hat sich jedoch auch in <strong>der</strong> deutsprachigen Literatur<br />

eingebürgert, da er in seinem Verwendungszweck eindeutiger zu sein scheint. Wir werden dieser Tatsache Rechnung tragen und<br />

trotz des sich daraus ergebenden Mißbrauchs <strong>der</strong> deutschen Sprache und Grammatik den Begriff feature weiterverwenden.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!