Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Philipp Laner Geändert vor über 11 Jahren
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.