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 m Modellierung von Verhalten / graphische Programmierung 7. Zusammenfassung
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 2 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
Story Diagram Idioms Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 3
runtime program 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 r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 r13 :Room credits = 6 s2 :Student name = "Karli" motivation = 99 d3 :Door a1 :Assign d11 :Door d10 :Door d9 :Door d7 :Door in a2 : Assign a5 : Assign a6 : Assign a3 : Assign a4 : Assign in d12 :Door r11 :Room credits = 9
runtime program r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 r13 :Room credits = 6 s2 :Student name = "Karli" motivation = 99 d3 :Door a1 :Assign d11 :Door d10 :Door d9 :Door d7 :Door in a2 : Assign a5 : Assign a6 : Assign a3 : Assign a4 : Assign in d12 :Door r11 :Room credits = 9
runtime program r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 7 r12 credits = 8 r13 :Room credits = 6 s2 :Student name = "Karli" motivation = 99 d3 :Door a1 :Assign d11 :Door d10 :Door d9 :Door d7 :Door in a2 : Assign a5 : Assign a6 : Assign a3 : Assign a4 : Assign in d12 :Door r11 :Room credits = 9
runtime program r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 r13 :Room credits = 6 d3 :Door a1 :Assign d11 :Door d10 :Door d9 :Door d7 :Door in a2 : Assign a5 : Assign a6 : Assign a3 : Assign a4 : Assign in d12 :Door r11 :Room credits = 9 s2 :Student name = "Karli" credits = 34 motivation = 99
runtime program r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 r13 :Room credits = 6 s2 :Student name = "Karli" motivation = 99 d3 :Door a1 :Assign d11 :Door d10 :Door d9 :Door d7 :Door in a2 : Assign a5 : Assign a6 : Assign a3 : Assign a4 : Assign in d12 :Door r11 :Room credits = 9
runtime program r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 s2 :Student name = "Karli" motivation = 99 d3 :Door a1 :Assign d10 :Door d9 :Door d7 :Door in a2 : Assign a5 : Assign a6 : Assign in d12 :Door r11 :Room credits = 9
runtime program r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 r13 :Room credits = 6 s2 :Student name = "Karli" motivation = 99 d3 :Door a1 :Assign d11 :Door d10 :Door d9 :Door d7 :Door in a2 : Assign a5 : Assign a6 : Assign a3 : Assign a4 : Assign in d12 :Door r11 :Room credits = 9
runtime program r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 s2 :Student name = "Karli" motivation = 99 d3 :Door a1 :Assign d10 :Door d9 :Door d7 :Door in a2 : Assign a5 : Assign a6 : Assign a3 : Assign a4 : Assign in d12 :Door r11 :Room credits = 9
runtime r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 s2 :Student name = "Karli" motivation = 99 d3 :Door a1 :Assign d10 :Door d9 :Door d7 :Door in a2 : Assign a5 : Assign a6 : Assign in d12 :Door r11 :Room credits = 9
runtime program r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 s2 :Student name = "Karli" motivation = 99 d3 :Door a1 :Assign d10 :Door d9 :Door d7 :Door in a2 : Assign a5 : Assign a6 : Assign in d12 :Door r11 :Room credits = 9
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 24 Alle Matches: r2 :Room costs = 2 r5 :Room costs = 10 r11 :Room costs = 9 r8 :Room costs = 8 r12 costs = 7 r13 :Room costs = 6 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 in
r8 :Room credits = 8 s2 :Student name = "Karli" motivation = 99 in p3 :Professor name = "Karla" motivation = 9999 in runtime program
r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 r13 :Room credits = 6 s2 :Student name = "Karli" motivation = 99 d3 :Door d11 :Door d10 :Door d9 :Door d7 :Door in a5 : Assign a6 : Assign a3 : Assign a4 : Assign in d12 :Door r11 :Room credits = 9
runtime program r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 r13 :Room credits = 6 s2 :Student name = "Karli" motivation = 99 d3 :Door d11 :Door d10 :Door d9 :Door d7 :Door in a5 : Assign a6 : Assign a3 : Assign a4 : Assign in d12 :Door r11 :Room credits = 9
runtime program r2 :Room credits = 2 r5 :Room credits = 10 r8 :Room credits = 8 r12 credits = 7 r13 :Room credits = 6 s2 :Student name = "Karli" motivation = 99 d3 :Door d11 :Door d10 :Door d9 :Door d7 :Door in a5 : Assign a6 : Assign a3 : Assign a4 : Assign in d12 :Door r11 :Room credits = 9
r8 :Room credits = 8 s2 :Student name = "Karli" credits = 99 in p3 :Professor name = "Karla" motivation = 9999 in runtime program r9 :Room credits = 12 s3 :Student name = "Mira" credits = 110 in
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 30 Rule Syntax: Overview
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 31 Rule Syntax: Overview
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 32 The FAMous Fujaba Abstract Machine (Teil 1) Der Befehlssatz: m in den Objekten werden Kommandos / Nachrichten von vergesslichen Object Guys abgearbeitet m Object Guys schlafen normaler weise m beim Aufwachen wird die Umgebung vom Nebel des Vergessens verschleiert m Object Guys sehen nicht was die anderen tun m Jeder Object Guy hat eigenen Namensraums m Object Guy hat Handlungsanweisungen für jedes mögliche Komando m Immer ein Object Guy pro Nachricht Object Guy kann: m Kanten lesen und lokale Namen für Nachbarn vergeben m Attribute lesen und prüfen m temporäre Werte notieren m Berechnungen durchführen m Nachrichten verschicken (wartet (untätig) auf Antwort) m Antworten zurückschicken (und wieder einschlafen) m Attribute schreiben m Kanten löschen / erzeugen m Objekte löschen / erzeugen