Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 1 4. Design Gliederung: 1. Einführung 2. Anforderungsdefinition 3. Analyse 4. Design.

Ähnliche Präsentationen


Präsentation zum Thema: "Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 1 4. Design Gliederung: 1. Einführung 2. Anforderungsdefinition 3. Analyse 4. Design."—  Präsentation transkript:

1 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 1 4. Design Gliederung: 1. Einführung 2. Anforderungsdefinition 3. Analyse 4. Design l Klassendiagramme l Regel-Diagramme <== l Zetteltests 5. Validierung 6. Zusammenfassung

2 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 2 Beispiel: Objektspiel Spielstein raussetzen Main Memory ObjectsRule Diagram / Program

3 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 3 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 wird 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

4 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 4 Rule Diagrams: graphische Notation für Befehle der Fujaba Abstract Machine Main Memory ObjectsRule Diagram / Program 1.benenne this 2.lese gehoert Link; benenne meinSp 3.lese hat; benenne seinWuerfel 4.prüfe augenzahl == 6 5.lese ist_Startfeld_von, benenne seinStart 6.lese steht_in; benenne meinHeim 7.lösche ist_Startfeld_von 8.erzeuge steht_auf

5 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 5 Fujaba Abstract Machine Teil 2: Zetteltest Main Memory ObjectsRule Diagram / Program meinSp seinWuerfel seinStart steht auf this meinHeim

6 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 6 Rule Diagram Syntax: benennen Objektkasten: class Spielstein {... public void raussetzen () { Heimatfeld meinHeim = null; Spieler meinSp = null; Feld seinStart = null; Wuerfel seinWuerfel = null;... benennen: Objekttyp mit angeben ungebundene Objekte werden zu gebundenen Objekten, unbekannte Objekte werden bekannt Namen benutzen: ohne Objekttyp ACHTUNG: m bei [failure] des Vorgängerschritts wurden eventuell nicht alle Variablen gebunden !

7 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 7 Rule Diagram Syntax: lese Link Link: m bei zu-1 Links von bekanntem Objekt zu unbekanntem Objekt - get-Methode verwenden - Erfolg prüfen: meinSp = this.getGehoert (); if (meinSp != null) {.... l oder try {... meinSp = this.getGehoert (); JavaSDM.ensure ( meinSp != null );... } catch (SDMException e) { sdmSuccess = false }... m danach ist der Name zugewiesen

8 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 8 Hilfsmethode JavaSDM.ensure class JavaSDM { public static void ensure (boolean expr) { if (expr == false) { throw new SDMException (); }

9 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 9 Rule Diagram Syntax: lese Link Link: m bei zu-n Links von bekanntem Objekt zu unbekanntem Objekt - iteratorOf-Methode verwenden - while Schleife bis zum Erfolg: sdmSuccess = false;... Iterator iter = meinSp.iteratorOfSteine (); while ( !(sdmSuccess) && iter.hasNext () ) { try { stein2 = (Spielstein) iter.next (); JavaSDM.ensure... // prüfen ob es der richtige ist sdmSuccess = true; } catch (SDMException e) { } } // while

10 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 10 Rule Diagram Syntax: prüfe Attributwert Attributbedingung: sdmSuccess = false;... try {... seinWuerfel = meinSp.getHat (); JavaSDM.ensure ( seinWuerfel != null); JavaSDM.ensure ( seinWuerfel.getAugenzahl == 6);... } catch (SDMException e) { }

11 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 11 Rule Diagram Syntax: prüfe Link zwischen gebundenen (schon benannten) Objekten Link: Link zwischen gebundenen Objekten: JavaSDM.ensure ( meinSp.getHat () == seinWuerfel); oder bei zu-n Link: JavaSDM.ensure ( x.hasInNeighbours (y)); prüfe allgemeinen Constraint: Prüfung JavaSDM.ensure ( meinSp.noOfSteine() < w.getAugenzahl() );

12 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 12 Rule Diagram Syntax: prüfe kein Nachbar da negatives Objekt: kollege = seinStart.getBewohner(); JavaSDM.ensure ( ! (kollege.getGehoert() == meinSp)) prüfe kein Link da negativer Link: JavaSDM.ensure ( (x.getGehört() != meinSp))

13 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 13 Rule Diagram Syntax: benenne wenn möglich optionales Objekt: lese/prüfe Link wenn möglich optionaler Link: benenne alle Nachbarn Mengenobjekt : x :C x :C1y :C2 next > others :C3

14 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 14 Rule Diagram Syntax: loesche Objekt >: gegener.removeYou() loesche Link >: this.setStehtIn (null); erzeuge Objekt >: neuStein = new SpielStein (); erzeuge Link >: this.setStehtAuf (seinStart); setze Attributwert augenzahl := 0: w.setAugenzahl (0); nachricht m1() 1: m1() meinSp.naechsterSpieler();

15 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 15 Rule Syntax: Overview

16 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 16 Rule Diagrams: Kontrollfluss Activities m start activity m stop activities m rule acitivities m code activities m branch activities Transitionen l ohne Guard l [success] l [failure] l [boolean condition] l [else]

17 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 17 Rule Diagrams: for-each Activities this looser lostCounter noPos lhome at

18 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 18 Rule Diagrams: for-each Activities class Game { public void collectThrownCounters () {... Iterator looserIter = this.iteratorOfPlayers(); while (!sdmSuccess && looserIter.hasNext()) { try { sdmSuccess = false; looser = looserIter.next (); lhome = looser.getHome (); JavaSDM.ensure (lhome != null); countersIter = looser.iteratorOfCounters (); while (!sdmSuccess && countersIter.hasNext()) { try { lostCounter = countersIter.next (); JavaSDM.ensure (lostCounter.getAt() == null); sdmSuccess = true; lostCounter.setAt (lhome); } catch (SDMException e) {} } // while } catch (SDMException e) {} } // while

19 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 19 Rule Diagrams: for-each Activities m doppelte Activity Box m anwenden so oft wie möglich m [each time] transition für zusätzliche Aktionen für jeden Match m [end] transition nach Abbruch [end]

20 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 20 Rule Diagrams: for-each Activities class Game { public void collectThrownCounters () {... Iterator looserIter = this.iteratorOfPlayers(); while (!sdmSuccess && looserIter.hasNext()) { try { sdmSuccess = false; looser = looserIter.next (); lhome = looser.getHome (); JavaSDM.ensure (lhome != null); countersIter = looser.iteratorOfCounters (); while (!sdmSuccess && countersIter.hasNext()) { try { lostCounter = countersIter.next (); JavaSDM.ensure (lostCounter.getAt() == null); sdmSuccess = true; lostCounter.setAt (lhome); } catch (SDMException e) {} } // while } catch (SDMException e) {} } // while [end]

21 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 21

22 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 22

23 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 23


Herunterladen ppt "Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 1 4. Design Gliederung: 1. Einführung 2. Anforderungsdefinition 3. Analyse 4. Design."

Ähnliche Präsentationen


Google-Anzeigen