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

MVC-Soft­ware­mus­ter

 

Das MVC-Soft­ware­mus­ter ist eine Mög­lich­keit zur Struk­tu­rie­rung einer An­wen­dung. Dazu wer­den drei Be­rei­che un­ter­schie­den: Da­ten­mo­dell (model), Dar­stel­lung (view) und Pro­gramm­steue­rung (con­trol).

MVC

Bild­quel­le: MVC-Soft­ware­mus­ter von ZPG/PG Fach [CC BY-SA 4.0 DE], aus Hin­ter­grund GUI-Pro­gram­mie­rung, be­ar­bei­tet

Durch diese Tren­nung er­leich­tert man die Wie­der­ver­wen­dung ein­zel­ner Teile der Soft­ware. Ohne Än­de­rung des Da­ten­mo­dells kann die Soft­ware auf an­de­re Ge­rä­te oder sogar an­de­re Be­triebs­sys­te­me ad­ap­tiert wer­den.

Das Mo­dell ent­hält die dar­zu­stel­len­den Daten. Es ist von Prä­sen­ta­ti­on und Steue­rung un­ab­hän­gig. Das Mo­dell muss die Än­de­run­gen von re­le­van­ten Daten an die „Be­ob­ach­ter“ mel­den. Als Be­ob­ach­ter wer­den die View-Ele­men­te der An­wen­dung ein­ge­tra­gen.
Die Prä­sen­ta­ti­ons­schicht ist für die Dar­stel­lung der be­nö­tig­ten Daten aus dem Mo­dell und die Ent­ge­gen­nah­me von Be­nut­zer­inter­ak­tio­nen zu­stän­dig. Sie kennt so­wohl ihre Steue­rung als auch das Mo­dell, des­sen Daten sie prä­sen­tiert, ist aber nicht für die Wei­ter­ver­ar­bei­tung der vom Be­nut­zer über­ge­be­nen Daten zu­stän­dig. Im Re­gel­fall wird die Prä­sen­ta­ti­on über Än­de­run­gen von Daten im Mo­dell un­ter­rich­tet und kann dar­auf­hin die ak­tua­li­sier­ten Daten ab­ru­fen.

Die Steue­rung ver­wal­tet eine oder meh­re­re Prä­sen­ta­tio­nen, nimmt von ihnen Be­nut­zer­ak­tio­nen ent­ge­gen, wer­tet diese aus und agiert ent­spre­chend. Zu jeder Prä­sen­ta­ti­on exis­tiert eine Steue­rung. Es ist die Auf­ga­be der Steue­rung, Daten zu ma­ni­pu­lie­ren. Die Steue­rung ent­schei­det auf­grund der Be­nut­zer­ak­ti­on in der Prä­sen­ta­ti­on, wel­che Daten im Mo­dell ge­än­dert wer­den müs­sen. Sie ent­hält wei­ter­hin Me­cha­nis­men, um die Be­nut­zer­inter­ak­tio­nen der Prä­sen­ta­ti­on ein­zu­schrän­ken. Die Steue­rung kann in man­chen Im­ple­men­tie­run­gen eben­falls zu einem „Be­ob­ach­ter“ des Mo­dells wer­den, um bei Än­de­run­gen der Daten den View di­rekt zu ma­ni­pu­lie­ren1. Die di­rek­te In­ter­ak­ti­on zwi­schen Model und View ent­fällt dann. Model und View sind nur über den Con­trol­ler ver­bun­den.

 


1 De­fi­ni­ti­on des MVC-Mus­ters nach Seite „Model View Con­trol­ler“. In: Wi­ki­pe­dia, Die freie En­zy­klo­pä­die. (25.10. 2013). URL: http://​de.​wi­ki­pe­dia.​org/​w/​index.​php?​title=Mo­del_​View_​Con­trol­ler&​old​id=123​7955​62

Um­set­zung in Java

Die stren­ge Um­set­zung des MVC-Mus­ters in drei ver­schie­de­nen Klas­sen ist in der Schu­le in der Regel ein über­trie­be­ner Auf­wand. Die Tren­nung des Da­ten­mo­dells von der Steue­rung und der Dar­stel­lung ist aber sinn­voll. In der hier vor­ge­stell­ten Un­ter­richts­ein­heit ent­steht diese Tren­nung na­he­zu zwangs­läu­fig, auch wenn sie nicht Thema des Un­ter­richts ist. Das MVC-Mus­ter soll­te daher nicht im Vor­der­grund ste­hen, kann aber na­tür­lich als Kon­zept vor­ge­stellt wer­den.

Die Daten be­ste­hen in die­ser Un­ter­richts­ein­heit aus Bil­dern (Klas­se Pic­tu­re). Die Daten wer­den mit Al­go­rith­men der Bild­be­ar­bei­tung ver­än­dert. Diese Al­go­rith­men kön­nen un­ab­hän­gig von View und Con­trol­ler aus­ge­führt und in BlueJ ge­tes­tet wer­den. BlueJ (und die Klas­se Pic­tu­re­View­er) stellt so­zu­sa­gen au­to­ma­tisch einen View und den da­zu­ge­hö­ri­gen Con­trol­ler be­reit.

Mit dem Gluon Scene Buil­der wird die Ober­flä­che (View) ent­wor­fen. Dort wer­den auch die (meis­ten) Lis­tener-Me­tho­den fest­legt. Da­durch wird die Dar­stel­lung weit­ge­hend von der Steue­rung ge­trennt. Der Scene Buil­der bie­tet aber au­to­ma­tisch einen Roh­ling für die Con­trol­ler-Klas­se an.

Die Con­trol­ler-Klas­se stellt auch in die­sem Pro­jekt die Schnitt­stel­le zwi­schen GUI und den Bild­da­ten dar. Viele Me­tho­den sind daher sehr schlank und rufen nur die ent­spre­chen­den Al­go­rith­men zur Bild­be­ar­bei­tung auf.

Nicht sicht­bar ist, dass der Pic­tu­re­View­er der GUI als Be­ob­ach­ter für das Bild ein­ge­tra­gen wird. Jede Än­de­rung an einem Bild durch Auf­ruf einer Zei­chen­me­tho­de, würde dem ein­ge­tra­ge­nen Pic­tu­re­View­er-Ob­jekt mit­ge­teilt, das dar­auf­hin ein Neu-Zeich­nen aus­löst.

 

Hin­ter­grund GUI-Pro­gram­mie­rung: Her­un­ter­la­den [odt][289 KB]

Hin­ter­grund GUI-Pro­gram­mie­rung: Her­un­ter­la­den [pdf][517 KB]

 

Wei­ter zu GUI mit dem Gluon Scene Buil­der