Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling...
-
Upload
manfrid-kempf -
Category
Documents
-
view
103 -
download
0
Transcript of Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling...
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1
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
7. Zusammenfassung
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 2
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
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 3
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 4
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 5
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 6
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 7
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 8
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 9
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 10
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 11
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 12
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 13
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 14
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 15
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 16
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 17
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 18
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 19
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 20