Lektion 27:

Abstrakte Datentypen von Containerklassen

 Das Wort Container ist englisch und heißt Behälter. Containerklassen sind Klassen, in die man etwas "reinstopfen" kann und bei Bedarf wieder herausholen. Es gibt viele verschiedene Containerklassen, denen jeweils ein bestimmter Aufbau mit seinen Vor- und Nachteilen zugrundeliegt. Sie lassen sich sehr schön auf ihre abstrakten Datentypen reduzieren, indem man einfach von den Attributen und Implementierungsdetails absieht.

Für einige Containerklassen haben sich bereits feste Namen eingebürgert (in Klammern stehen alternative Namen, die man auch gelegentlich hört):

 Vector (Array):

Der ist so ähnlich wie das Array in C++. Man kann auf ein Element anhand einer laufenden Nummer zugreifen.

   Stack (Stapel, LIFO, Keller) :

Das ist ein Stapel. Man kann Elemente oben drauflegen, und sie wieder von oben nehmen. Ein Zugriff auf Elemente irgendwo in der Mitte ist nicht möglich. Ein Stack ist sehr einfach und sehr effizient.

  Queue (Warteschlange, FIFO) :

Man kann Elemente vorne anfügen und hinten wegnehmen.

   Dictionary (Map, Hash) :

Man kann Paare von Schlüsselwert und Datensatz zusammen einspeichern. Dann kann man nach Schlüsseln suchen und die zugehörigen Datensätze anzeigen oder löschen.

  Set (Menge):

Man kann Werte zufügen, entfernen und löschen. Diese Werte können aber immer nur einmal in der Menge vorhanden sein. Ein wiederholtes Einfügen wird ignoriert.

  Multiset (Bag):

Wie Set, aber die Werte dürfen auch mehrfach vorkommen.

Übung:

Entwerfen Sie eine Client-Server-Applikation zur Durchführung unserer weltweiten Warentermingeschäfte. Das System soll robust gegen Rechnerausfälle sein und die Abläufe in Echtzeit bearbeiten.

Einsendungen:

Lösungsvorschlag


Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00