Zur Hauptnavigation springen [Alt]+[0] Zum Seiteninhalt springen [Alt]+[1]

Doppelstunde 2: Verkettung implementieren

Inhalt dieser Doppelstunde ist, dass die Schülerinnen und Schüler eine verkettete Liste mit ihren Standard-Methoden implementieren. Das Aufgabenblatt 02_implementation_liste.odt beschreibt die Methoden, die programmiert werden müssen. Das BlueJ-Projekt 02_verkettete_liste enthält bereits eine Implementation eines generischen Listenknoten sowie die Skelette zweier Listen-Implementationen (iterativ und rekursiv). Aus Gründen der Übersichtlichkeit wurden die Testklassen und die Listen-Implementation in Unterverzeichnisse verschoben. Die Implementation soll also im Paket „liste“ vorgenommen werden.

Die rekursive Implementation ist als Binnendifferenzierungsangebot gedacht. Pflicht ist, dass alle Schülerinnen und Schüler die iterative Variante implementieren können.

Wenn die Implementation abgeschlossen ist, kann man die Testfälle der Unit-Test-Klassen TesterIterativ bzw. TesterRekursiv durchführen lassen.

Bei der Implementation der Listenknoten-Klasse fällt auf, dass sie ein wenig von der üblichen Weise abweicht, wie Attribute behandelt werden. Danach sind Attribute grundsätzlich privat und es werden stattdessen get- und set-Zugriffsmethoden angeboten werden. Hier wird aus folgenden Gründen bewusst von der Regel abgewichen:

  • Die get- und set-Methoden würden eigentlich nichts tun: Die Getter geben das Attribut unverändert zurück, die Setter ändern das Attribut ohne Prüfung. Stattdessen würde die Syntax unnötig kompliziert und der Code aufgebläht.
  • Ein anderer Grund für das get-/set-Pattern ist, dass man die interne Repräsentation ändern können soll, ohne die äußere Schnittstelle zu ändern. Dies ist hier nicht notwendig, da die Klasse Listenknoten nur von den Klassen ListeIterativ und ListeRekursiv verwendet wird. Eventuelle Änderungen an den Listenknoten müssen nur in diesen Klassen nachgezogen werden.
    • Es wäre sogar sinnvoll, die Klasse Listenknoten als innere Klasse (Sichtbarkeit protected) der abstrakten Klasse Liste zu definieren (siehe rechts). Damit können ohnehin nur Liste-Objekte die Klasse Listenknoten verwenden.

 

 

 

 

 

 

Zur Visualisierung der Verkettung sei an dieser Stelle noch auf den Java-Editor2 verwiesen, der zur Laufzeit ein UML-Objektdiagramm mit den Verweisen zwischen den Objekten erstellen kann.

UML-Objektdiagramm

Bildquelle: UML-Objektdiagramm ZPG Informatik [CC BY-NC-SA 3.0 DE], aus 01_unterrichtsverlauf.odt

Öffnen Sie die jeweiligen Klassen im Java-Editor und lassen Sie ein UML-Diagramm aus den Dateien erstellen. Öffnen Sie bei Bedarf das „Meldungen“-Fenster und geben Sie einige Befehle zum Erzeugen einer Liste und zum Verändern der Liste unten ein.

 

2 http://javaeditor.org/

 

Unterrichtsverlauf: Herunterladen [odt][187 KB]

 

Weiter zu DS 3: Konzept „Abstrakte Datentypen“ [nur LF]