6. Story Driven Modeling Gliederung: Einführung Objektdiagramme zur Analyse von Beispielen Klassendiagramme in Java implementieren Methodenentwurf Test-First Prinzip Story Driven Modeling Modellierung von Verhalten / graphische Programmierung Zusammenfassung Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Programmentwurf: Beispiel auf Anwendungsebene anschauen Beispiel in Objektdiagrammen / Story Boards modellieren Klassendiagramm ableiten / erweitern / implementieren Test bauen "Dreisprung": generellen Kontrollfluss auf Anwendungsebene skizzieren generelles Verhalten auf Objektebene skizzieren allgemeines Verhalten programmieren programmiertes Verhalten an Ausgangsbeispiel testen programmiertes Verhalten an alternativen Beispielen testen Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Story Diagram Idioms Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel
z1 :Machine runtime program
z2 :Machine runtime program
z3 :Machine runtime program
z4 :Machine runtime program
z4 :Machine runtime program
z5 :Machine runtime program
z5 :Machine runtime program
z6 :Machine runtime program
z7 :Machine runtime program
z8 :Machine runtime program
in a1 :Assign r2 :Room credits = 2 a2 : Assign in d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d11 :Door d10 :Door r13 :Room credits = 6 r11 :Room credits = 9 in r12 credits = 7 in a3 : Assign a5 : Assign in in a4 : Assign a6 : Assign runtime program
in a1 :Assign r2 :Room credits = 2 a2 : Assign in d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d11 :Door d10 :Door r13 :Room credits = 6 r11 :Room credits = 9 in r12 credits = 7 in a3 : Assign a5 : Assign in in a4 : Assign a6 : Assign runtime program
in a1 :Assign r2 :Room credits = 2 a2 : Assign in d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 7 d7 :Door d9 :Door d11 :Door d10 :Door r13 :Room credits = 6 r11 :Room credits = 9 in r12 credits = 8 in a3 : Assign a5 : Assign in in a4 : Assign a6 : Assign runtime program
a1 :Assign in a2 : Assign r2 :Room credits = 2 in s2 :Student name = "Karli" credits = 34 motivation = 99 d3 :Door d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d11 :Door d10 :Door r13 :Room credits = 6 r11 :Room credits = 9 in r12 credits = 7 in a3 : Assign a5 : Assign in in a4 : Assign a6 : Assign runtime program
in a1 :Assign r2 :Room credits = 2 a2 : Assign in d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d11 :Door d10 :Door r13 :Room credits = 6 r11 :Room credits = 9 in r12 credits = 7 in a3 : Assign a5 : Assign in in a4 : Assign a6 : Assign runtime program
in a1 :Assign r2 :Room credits = 2 a2 : Assign in d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d10 :Door r11 :Room credits = 9 in r12 credits = 7 a5 : Assign in a6 : Assign runtime program
in a1 :Assign r2 :Room credits = 2 a2 : Assign in d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d11 :Door d10 :Door r13 :Room credits = 6 r11 :Room credits = 9 in r12 credits = 7 in a3 : Assign a5 : Assign in in a4 : Assign a6 : Assign runtime program
in a1 :Assign r2 :Room credits = 2 a2 : Assign in d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d10 :Door r11 :Room credits = 9 in r12 credits = 7 in a3 : Assign a5 : Assign in in a4 : Assign a6 : Assign runtime program
in a1 :Assign r2 :Room credits = 2 a2 : Assign in d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d10 :Door r11 :Room credits = 9 in r12 credits = 7 a5 : Assign in a6 : Assign runtime
in a1 :Assign r2 :Room credits = 2 a2 : Assign in d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d10 :Door r11 :Room credits = 9 in r12 credits = 7 a5 : Assign in a6 : Assign runtime program
Alle Matches: r2 :Room costs = 2 r5 :Room costs = 10 r11 :Room p2 :Person name = "Prinz" geld = 99 d3 :Door i1 :Item d11 :Door d10 :Door d9 :Door d7 :Door in i2 :Item i5 :Item i6 :Item i3 :Item i4 :Item Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
p3 :Professor name = "Karla" motivation = 9999 s2 :Student name = "Karli" motivation = 99 in in r8 :Room credits = 8 runtime program
r2 :Room credits = 2 d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d11 :Door d10 :Door r13 :Room credits = 6 r11 :Room credits = 9 in r12 credits = 7 in a3 : Assign a5 : Assign in in a4 : Assign a6 : Assign runtime program
r2 :Room credits = 2 d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d11 :Door d10 :Door r13 :Room credits = 6 r11 :Room credits = 9 in r12 credits = 7 in a3 : Assign a5 : Assign in in a4 : Assign a6 : Assign runtime program
r2 :Room credits = 2 d3 :Door s2 :Student name = "Karli" motivation = 99 d12 :Door r5 :Room credits = 10 in r8 :Room credits = 8 d7 :Door d9 :Door d11 :Door d10 :Door r13 :Room credits = 6 r11 :Room credits = 9 in r12 credits = 7 in a3 : Assign a5 : Assign in in a4 : Assign a6 : Assign runtime program
p3 :Professor name = "Karla" motivation = 9999 s2 :Student name = "Karli" credits = 99 in in r8 :Room credits = 8 s3 :Student name = "Mira" credits = 110 in r9 :Room credits = 12 runtime program
Rule Syntax: Overview Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Rule Syntax: Overview Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
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