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.

Dieses Problem wird durch das Konzept <strong>der</strong> Vererbung gelöst, welches wir im Abschnitt 3.8 diskutieren<br />

werden. Man deklariert einfach eine allgemeinere Klasse ZWEI KOORD, welche die gemeinsamen Merkmale von<br />

Punkten und Vektoren charakterisiert und deklariert dann die Liste l als vom Typ LIST[ZWEI KOORD]. Die<br />

Klassen PUNKT und VEKTOR werden als Abkömmling von ZWEI KOORD deklariert und somit dürfen als Elemente<br />

von l sowohl Vektoren als auch Punkte eingesetzt werden.<br />

3.6.3 Fel<strong>der</strong>: Beispiele generischer Klassen<br />

Viele Klassen <strong>der</strong> Eiffel-Basisbibliothek, die von jedem Compiler bereitgestellt wird, repräsentieren allgemeine<br />

Datenstrukturen und sind deshalb generische Klassen. Beipiele hierfür sind Kellerspeicher (Stacks), Warteschlangen<br />

(Queues), Listen, Bäume (Trees) und Fel<strong>der</strong> (Arrays).<br />

Die Klasse ARRAY <strong>der</strong> eindimensionalen Fel<strong>der</strong> ist für praktische Anwendungen beson<strong>der</strong>s wichtig. Im Gegensatz<br />

zu an<strong>der</strong>en Sprachen sind Fel<strong>der</strong> in Eiffel kein vordefiniertes Sprachkonstrukt, son<strong>der</strong>n nur eine Klasse, für<br />

die ein beson<strong>der</strong>s effizienter Code vorhanden ist. Daher verwenden Fel<strong>der</strong> in Eiffel auch nicht die in an<strong>der</strong>en<br />

Sprachen gebräuchlichen speziellen Notationen zur Kennzeichnung von Indizes, son<strong>der</strong>n stellen für Zugriff<br />

und Zuweisung – wie immer – Routinen zur Verfügung. Dadurch kann man zuweilen bei <strong>der</strong> Realisierung<br />

komplexer indizierter Ausdrücke in Eiffel die Übersicht verlieren. An<strong>der</strong>erseits ist die Klasse ARRAY erheblich<br />

flexibler als gewöhnliche Fel<strong>der</strong>. Abbildung 3.21 beschreibt die wichtigsten features <strong>der</strong> Klasse ARRAY (eine<br />

komplette Beschreibung liefert [Meyer, 1992, Kapitel 28.7]).<br />

class ARRAY[X]<br />

creation make<br />

feature<br />

lower, upper, count: INTEGER;<br />

make(min,max:INTEGER) is -- Erzeuge Feld mit Grenzen min und max<br />

do...end;<br />

item, infix "@" (i:INTEGER):X is -- Element mit Index i<br />

do...end;<br />

put(val:X,i:INTEGER) is -- Weise dem Element mit Index i den Wert val zu<br />

do...end;<br />

.<br />

end -- class ARRAY[X]<br />

Abbildung 3.21: Klassendefinition für Fel<strong>der</strong> (mit infix Deklaration)<br />

Die Funktion make ermöglicht eine dynamische Felddimensionierung mit beliebigen Grenzen (allerdings ist<br />

das Feld leer, wenn max

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!