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