3. Klassendiagramme in Java implementieren Gliederung: Einführung Objektdiagramme zur Analyse von Beispielen Klassendiagramme in Java implementieren Methodenentwurf Test-First Prinzip Story Driven Modeling Zusammenfassung Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Motivation: rettet Prinz(essin) Ada Aufgabe: Wegesuche Handicaps: Räume kosten genaue Geldmenge ausgeben versteckte Geschenke Fallen . . . Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Alternative Modellierungen p1 :Person name = "Ada" in r2 :Raum kosten = 0 s7 :Schluessel hat t3 :Tuer locked = true in hat hat hat r4 :Raum kosten = 12 t5 :Tuer locked = false r6 :Raum kosten = 10 Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Klassen als Baupläne für Objekte hat Person name : String geld : Integer Schluessel in in oeffnet hat in Geschenk name : String Raum kosten : Integer Tuer locked : Boolean Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Klassendiagramme "Syntax" von Klassendiagrammen: kommt gleich Semantik von Klassendiagrammen aus extensionaler Sicht: Menge aller "gültigen" Objektdiagramme / Momentaufnahmen und Szenarios (siehe Verhaltensdiagramme) ein Objektdiagramm / eine Momentaufnahme ist "gültig" wenn: alle verwendeten Klassen sind deklariert alle benutzten Attribute sind deklariert und werden typkonform verwendet für jeden Link gibt es eine Assoziation zwischen den entsprechenden Klassen die Kardinialiätsangaben der Assoziationen werden nicht verletzt . . . Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Implementierung: public class Raum { } Raum … Raum r = new Raum (); … Struktur Daten Verhalten … Raum r = new Raum (); … r = new Raum (); … :Raum :Raum Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Implementierung: public class Raum { … Raum public int kosten; … } kosten : Integer Struktur Daten Verhalten … if (r.kosten <= 0) { r.kosten = 12; } :Raum kosten = 5 :Raum kosten = -1 Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Implementierung: public class Raum { public void kassieren (Person p) { … } … } Raum kassieren (p:Person) Struktur Daten Verhalten :Raum kosten = 8 :Raum kosten = 12 … r.kassieren (p); :Person geld = 50 :Person geld = 100 Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Implementierung: Schluessel Tuer locked :Boolean public class Schluessel { Tuer tuer; } public class Tuer { Schluessel oeffner; Schluessel oeffner 0..1 oeffnet tuer 0..1 Tuer locked :Boolean Struktur Daten Verhalten … t = new Tuer (); … t = new Tuer (); s = new Schluessel (); t.locked = true; s.tuer = t; t.oeffner = s; … :Schluessel :Tuer locked = false :Tuer locked = false Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Implementierung: Schluessel Tuer locked :Boolean public class Schluessel { Tuer tuer; } public class Tuer { Schluessel oeffner; Schluessel oeffner 0..1 oeffnet tuer 0..1 Tuer locked :Boolean Struktur Daten Verhalten … if (t.locked) { Schluessel s = t.hat; if (s.besitzer == p) { … :Schluessel :Tuer locked = false oeffnet :Tuer locked = false Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Implementierung: Person Raum … p.in = r; r.gaeste.add (p); … public class Person { Raum in; } import java.util.*; public class Raum { List gaeste; } Person gaeste 0..n in in 0..1 Raum Struktur Daten Verhalten … p.in = r; r.gaeste.add (p); … p.in = r; r.gaeste.add (p); … :Person geld = 50 geld = 100 :Raum kosten = 8 kosten = 12 Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Implementierung: Person Raum public class Person { Raum in; } import java.util.*; public class Raum { List gaeste; } Person gaeste 0..n in in 0..1 Raum Struktur Daten Verhalten … for (Person p : r.gaeste ) { p.geld = p.geld – r.kosten; } … :Person geld = 50 geld = 100 :Raum kosten = 8 kosten = 12 Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Syntax von Klassendiagrammen (UML) Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
"Syntax" von Objektdiagrammen: Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel