Zur Haupt­na­vi­ga­ti­on sprin­gen [Alt]+[0] Zum Sei­ten­in­halt sprin­gen [Alt]+[1]

Dop­pel­stun­de 2: Ver­ket­tung im­ple­men­tie­ren

In­halt die­ser Dop­pel­stun­de ist, dass die Schü­le­rin­nen und Schü­ler eine ver­ket­te­te Liste mit ihren Stan­dard-Me­tho­den im­ple­men­tie­ren. Das Auf­ga­ben­blatt 02_im­ple­men­ta­ti­on_­lis­te.odt be­schreibt die Me­tho­den, die pro­gram­miert wer­den müs­sen. Das BlueJ-Pro­jekt 02_ver­ket­te­te_­lis­te ent­hält be­reits eine Im­ple­men­ta­ti­on eines ge­ne­ri­schen Lis­ten­kno­ten sowie die Ske­let­te zwei­er Lis­ten-Im­ple­men­ta­tio­nen (ite­ra­tiv und re­kur­siv). Aus Grün­den der Über­sicht­lich­keit wur­den die Test­klas­sen und die Lis­ten-Im­ple­men­ta­ti­on in Un­ter­ver­zeich­nis­se ver­scho­ben. Die Im­ple­men­ta­ti­on soll also im Paket „liste“ vor­ge­nom­men wer­den.

Die re­kur­si­ve Im­ple­men­ta­ti­on ist als Bin­nen­dif­fe­ren­zie­rungs­an­ge­bot ge­dacht. Pflicht ist, dass alle Schü­le­rin­nen und Schü­ler die ite­ra­ti­ve Va­ri­an­te im­ple­men­tie­ren kön­nen.

Wenn die Im­ple­men­ta­ti­on ab­ge­schlos­sen ist, kann man die Test­fäl­le der Unit-Test-Klas­sen Tes­te­rI­te­ra­tiv bzw. Tes­ter­Re­kur­siv durch­füh­ren las­sen.

Bei der Im­ple­men­ta­ti­on der Lis­ten­kno­ten-Klas­se fällt auf, dass sie ein wenig von der üb­li­chen Weise ab­weicht, wie At­tri­bu­te be­han­delt wer­den. Da­nach sind At­tri­bu­te grund­sätz­lich pri­vat und es wer­den statt­des­sen get- und set-Zu­griffs­me­tho­den an­ge­bo­ten wer­den. Hier wird aus fol­gen­den Grün­den be­wusst von der Regel ab­ge­wi­chen:

  • Die get- und set-Me­tho­den wür­den ei­gent­lich nichts tun: Die Get­ter geben das At­tri­but un­ver­än­dert zu­rück, die Set­ter än­dern das At­tri­but ohne Prü­fung. Statt­des­sen würde die Syn­tax un­nö­tig kom­pli­ziert und der Code auf­ge­bläht.
  • Ein an­de­rer Grund für das get-/set-Pat­tern ist, dass man die in­ter­ne Re­prä­sen­ta­ti­on än­dern kön­nen soll, ohne die äu­ße­re Schnitt­stel­le zu än­dern. Dies ist hier nicht not­wen­dig, da die Klas­se Lis­ten­kno­ten nur von den Klas­sen Lis­teI­te­ra­tiv und Lis­te­Re­kur­siv ver­wen­det wird. Even­tu­el­le Än­de­run­gen an den Lis­ten­kno­ten müs­sen nur in die­sen Klas­sen nach­ge­zo­gen wer­den.
    • Es wäre sogar sinn­voll, die Klas­se Lis­ten­kno­ten als in­ne­re Klas­se (Sicht­bar­keit pro­tec­ted) der abs­trak­ten Klas­se Liste zu de­fi­nie­ren (siehe rechts). Damit kön­nen oh­ne­hin nur Liste-Ob­jek­te die Klas­se Lis­ten­kno­ten ver­wen­den.

 

 

 

 

 

 

Zur Vi­sua­li­sie­rung der Ver­ket­tung sei an die­ser Stel­le noch auf den Java-Edi­tor2 ver­wie­sen, der zur Lauf­zeit ein UML-Ob­jekt­dia­gramm mit den Ver­wei­sen zwi­schen den Ob­jek­ten er­stel­len kann.

UML-Objektdiagramm

Bild­quel­le: UML-Ob­jekt­dia­gramm ZPG In­for­ma­tik [CC BY-NC-SA 3.0 DE], aus 01_­un­ter­richts­ver­lauf.odt

Öff­nen Sie die je­wei­li­gen Klas­sen im Java-Edi­tor und las­sen Sie ein UML-Dia­gramm aus den Da­tei­en er­stel­len. Öff­nen Sie bei Be­darf das „Mel­dun­gen“-Fens­ter und geben Sie ei­ni­ge Be­feh­le zum Er­zeu­gen einer Liste und zum Ver­än­dern der Liste unten ein.

 

2 http://​ja­va­edi­tor.​org/

 

Un­ter­richts­ver­lauf: Her­un­ter­la­den [odt][187 KB]

 

Wei­ter zu DS 3: Kon­zept „Abs­trak­te Da­ten­ty­pen“ [nur LF]