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.

Kopien: 1
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 Story Diagramme l Zetteltests 5. Validierung 6. Zusammenfassung

2 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 2 Implementierung von Objektdiagrammen Ziel: Programm m Daten m Verhalten Für alle Objekte m Schablonen für Objekte m Zugriff auf Attribute m Bereitstellung von Links Klassen m gleichartige Objekte gemeinsame Klassen Step 2: Der Spielstein macht einen Schritt. Zwei bleiben. tom theDie s1 f3 f4 :Field v == 3 stones at next die «destroy» «create» 1: moveOneStep() 2: steps := 2

3 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 3 Projekthandbuch Beispiel 5. Design (Produktdaten): Klassendiagramm(e) des Projekts: m Klassen für alle Objektarten m Attributdeklarationen m Assoziationen m Methodendeklarationen ….. 5. Design (Produktdaten)

4 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 4 Projekthandbuch Beispiel Systematische Ableitung aus Story Boards: l ordne jedem Objekt vorhandenen oder neuen Typ zu. l für jede Attributverwendung Deklaration in entsprechender Klasse l für jeden Link entsprechende Assoziation l für jede Nachricht entsprechende Methodendeklaration tom theDie s1 f3 f4 :Field v == 3 stones at next die «destroy» «create»

5 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 5 Klassendiagramme "Syntax" von Klassendiagrammen: m kommt gleich Semantik von Klassendiagrammen aus extensionaler Sicht: m Menge aller "gültigen" Objektdiagramme / Momentaufnahmen und Szenarios (siehe Verhaltensdiagramme) ein Objektdiagramm / eine Momentaufnahme ist "gültig" wenn: l alle verwendeten Klassen sind deklariert l alle benutzten Attribute sind deklariert und werden typkonform verwendet l für jeden Link gibt es eine Assoziation zwischen den entsprechenden Klassen l die Kardinialiätsangaben der Assoziationen werden nicht verletzt l...

6 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 6 Klassendiagramme aus Implementierungssicht: public class Student { public void removeYou() { // kill all links } } Student Student s1 = new Student; … s1.removeYou();

7 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 7 Klassendiagramme aus Implementierungssicht: public class Student { … private String haarfarbe; public String getHaarfarbe() { return this.haarfarbe; } public void setHaarfarbe(String value){ this.haarfarbe = value; } … } Student haarfarbe:String String f = s1.getHaarFarbe(); … s1.setHaarFarbe(green);

8 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 8 Klassendiagramme aus Implementierungssicht: public class Student { … public void lese(String buch){ // todo } … } Student lese(String buch) … s1.lese(Harry Potter); …

9 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 9 Klassendiagramme aus Implementierungssicht: public class Student { private Sitz platz; public Sitz getPlatz() { return this.platz; } public void setPlatz(Sitz value){ if (this.platz != value) { if (this.platz != null) { Sitz oldPlatz = this.platz; this.platz = null; oldPlatz.setBesetzer(null); } this.platz = value; if (this.platz != null) { this.platz.setBesetzer (this); }}}} Student Sitz besetzer 0..1 hat platz 0..1

10 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 10 Klassendiagramme aus Implementierungssicht: public class Sitz { private Student besetzer; public Student getBesetzer() { return this.besetzer; } public void setBesetzer (Student value){ if (this.besetzer != value) { if (this.besetzer != null) { Sitz oldBesetzer = this.besetzer; this.besetzer = null; oldBesetzer.setPlatz(null); } this.besetzer = value; if (this.besetzer != null) { this.besetzer.setPlatz (this); }}}} Student Sitz besetzer 0..1 hat platz 0..1

11 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 11 Klassendiagramme aus Implementierungssicht: Student Sitz besetzer 0..1 hat platz 0..1 … Sitz pos = s1.getPlatz(); … s1.setPlatz (sitz2); …

12 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 12 Klassendiagramme aus Implementierungssicht: Prof Tafel user 0..1 nutzt boards 0..n public class Prof { private HashSet boards = new FHashSet(); public boolean hasInBoards(Tafel value) { return this.boards.contains (value); } public int sizeOfBoards () { return this.boards.size(); } public Iterator iteratorOfBoards () { return this.boards.iterator(); } }

13 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 13 Klassendiagramme aus Implementierungssicht: Prof Tafel user 0..1 nutzt boards 0..n boolean flag = albert.hasInBoards (linkeTafel); int no = albert.sizeOfBoards(); Iterator iter = albert.iteratorOfBoards(); while (iter.hasNext()) { Tafel current = (Tafel) iter.next(); }

14 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 14 Klassendiagramme aus Implementierungssicht: Prof Tafel user 0..1 nutzt boards 0..n public class Prof { private HashSet boards = new FHashSet(); … public void addToBoards (Tafel value) { if ( value != null && ! this.hasInBoards (value)) { this.boards.put (value); value.setUser (this); }} public void removeFromBoards (Tafel value) { if (value != null && this.hasInBoards (value) { this.boards.remove (value); value.setUser (null); }} }

15 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 15 Klassendiagramme aus Implementierungssicht: Prof Tafel user 0..1 nutzt boards 0..n … albert.addToBoards (tafel1); albert.addToBoards (tafel2); albert.removeFromBoards (tafel0); …

16 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 16 Klassendiagramme aus Implementierungssicht: Person Student … Person p1 = new Student (); … public class Student extends Person { … }

17 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 17 Syntax von Klassendiagrammen (UML 1)

18 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 18 Generierung von JUnit Tests: m Scenarios JUnit Tests, start situation setup code Start Situation: Tom rolled a 3 and selects counter 1 for moving theDie :Die f2 :Field v == 3 stones at next die f3 :Field next f4 :Field next class TestMoveUsual implements TestCase { private Player tom; private Die theDie; private Stone stone1;... void setUp () { tom = new Player (); theDie = new Die (); theDie.setV (3) tom.setDie (theDie); stone1 = new Stone (); tom.addToStones (stone1);... tom :Player stone1 :Stone f1 :Field tom theDie stone1 f2 f1 f3 f4 :TestMoveUsual

19 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 19 Generierung von JUnit Tests: m Scenarios JUnit Tests, start situation setup code Invocation: stone 1 is moved class TestMoveUsual implements TestCase {... void testMoveUsual () { this.stone1.move();... stone1 1: move ()

20 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 20 Generierung von JUnit Tests: m result situation check object modifications class TestMoveUsual implements TestCase { void testMoveUsual () { this.stone1.move(); assertTrue (tom.getDie() == theDie); assertTrue (theDie.getV() == 0); assertTrue (stone1.getPlayer () == tom); assertTrue (stone1.getAt () == f4); } Result Situation: the die is counted down to zero and stone 1 reached field 4 tom theDie stone1 f4 v == 0 stones at die

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