Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller...

31
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern

Transcript of Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller...

Page 1: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1

Model View Controller Pattern

Page 2: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 2

Textuelle Scenarios

Page 3: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 3

6. Story Driven Modeling

Gliederung:

1. Einführung

2. Objektdiagramme zur Analyse von Beispielen

3. Klassendiagramme in Java implementieren

4. Methodenentwurf

5. Test-First Prinzip

6. Story Driven Modeling Modellierung von Verhalten / graphische Programmierung

7. Zusammenfassung

Page 4: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 4

Programmentwurf:

1. Beispiel auf Anwendungsebene anschauen

2. Beispiel in Objektdiagrammen / Story Boards modellieren

3. Klassendiagramm ableiten / erweitern / implementieren

4. Test bauen

5. "Dreisprung":

1. generellen Kontrollfluss auf Anwendungsebene skizzieren

2. generelles Verhalten auf Objektebene skizzieren

3. allgemeines Verhalten programmieren

6. programmiertes Verhalten an Ausgangsbeispiel testen

7. programmiertes Verhalten an alternativen Beispielen testen

Page 5: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 5

Teil 1: Kontrollfluss mit Activity Diagrammen

Beispielsituation Programm

z1 :Machine

Page 6: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 6

Kontrollfluss: Kommandos / Methodenaufrufe

Beispielsituation Programm

z2 :Machine

Page 7: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 7

Kontrollfluss: Sequenz

Beispielsituation Programm

z3 :Machine

Page 8: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 8

Kontrollfluss: Fallunterscheidung

Beispielsituation Programm

z4 :Machine

Page 9: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 9

Kontrollfluss: Fallunterscheidung

Beispielsituation Programm

z4 :Machine

Page 10: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 10

Kontrollfluss: Zählschleife

Beispielsituation Programm

z5 :Machine

Page 11: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 11

Kontrollfluss: Zählschleife

Beispielsituation Programm

z5 :Machine

Page 12: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 12

Kontrollfluss: While Schleife

Beispielsituation Programm

z6 :Machine

Page 13: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 13

Teil 2: Operationen auf Objektstrukturen

Page 14: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 14

Kanten lesen

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 15: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 15

Attribute lesen

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 16: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 16

temporäre Werte notieren

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 17: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 17

Nachrichten verschicken

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 18: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 18

Antworten zurückschicken

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 19: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 19

Attribute schreiben

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 20: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 20

Kanten löschen / erzeugen

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 21: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 21

Objekte löschen / erzeugen

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 22: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 22

Objekte löschen / erzeugen

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 23: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 23

Rule Syntax: Overview

v : Class

v

v

v : ClassVariables:

v : Class v : Class v : Class«create» «create»

v

v : Class v : Class«create»

v«create»

v : Classv : Class v : Classv : Class v : Classv v : Classv

Attributes: . ..

attr <cmpOp> value

attr := value

Constrains:

{ <boolExpr> }

Links:assoc

ref

...

assoc[<key>]

«create» «create»

«create»

vv : Class

{first} {last}

«destroy»

«destroy»

«destroy» «destroy»

«destroy»

«destroy»

«destroy» 1: m () 2 [x>0]: m () 2.1 [while x>0]: m ()

Page 24: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 24

Kontrollstrukturen: Sequenz

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 25: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 25

Fallunterscheidungen:

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 26: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 26

Fallunterscheidung implizit:

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 27: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 27

Zählschleifen:

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 28: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 28

Zählschleifen:

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 29: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 29

Zählschleifen:

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 30: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 30

Alle Matches:

r2 :Roomcosts = 2

r5 :Roomcosts = 10

r11 :Roomcosts = 9

r8 :Roomcosts = 8

r12costs = 7

r13 :Roomcosts = 6

p2 :Personname = "Prinz"geld = 99

d3 :Door

i1 :Item

d11 :Door

d10 :Door

d9 :Doord7 :Door

in

i2 :Item

i5 :Item

i6 :Item

i3 :Item

i4 :Item

in

in

in

inin

in

Page 31: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 31

The FAMous Fujaba Abstract Machine (Teil 1)Der Befehlssatz:

in den Objekten werden Kommandos / Nachrichten von vergesslichen „Object Guys“ abgearbeitet

Object Guys schlafen normaler weise

beim Aufwachen wird die Umgebung vom „Nebel des Vergessens“ verschleiert

Object Guys sehen nicht was die anderen tun

Jeder Object Guy hat eigenen „Namensraums“

Object Guy hat „Handlungsanweisungen“ für jedes mögliche Komando

Immer ein Object Guy pro Nachricht

Object Guy kann: Kanten lesen und lokale

Namen für Nachbarn vergeben

Attribute lesen und prüfen temporäre Werte notieren Berechnungen durchführen Nachrichten verschicken

(wartet (untätig) auf Antwort) Antworten zurückschicken

(und wieder einschlafen) Attribute schreiben Kanten löschen / erzeugen Objekte löschen / erzeugen