Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller...
-
Upload
wolfram-kase -
Category
Documents
-
view
106 -
download
0
Transcript of Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller...
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
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
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
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 5
Teil 1: Kontrollfluss mit Activity Diagrammen
Beispielsituation Programm
z1 :Machine
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 6
Kontrollfluss: Kommandos / Methodenaufrufe
Beispielsituation Programm
z2 :Machine
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 7
Kontrollfluss: Sequenz
Beispielsituation Programm
z3 :Machine
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 8
Kontrollfluss: Fallunterscheidung
Beispielsituation Programm
z4 :Machine
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 9
Kontrollfluss: Fallunterscheidung
Beispielsituation Programm
z4 :Machine
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 10
Kontrollfluss: Zählschleife
Beispielsituation Programm
z5 :Machine
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 11
Kontrollfluss: Zählschleife
Beispielsituation Programm
z5 :Machine
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 12
Kontrollfluss: While Schleife
Beispielsituation Programm
z6 :Machine
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 13
Teil 2: Operationen auf Objektstrukturen
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
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
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
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
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
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
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
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
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
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 ()
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
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
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
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
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
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
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
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