Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1
Gliederung
1. Einführung
2. Objektdiagramme zur Analyse von Beispielen
3. Methodenentwurf
4. Test-First Prinzip
5. Story Driven Modeling
6. Zusammenfassung
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 2
Motivation: rettet Prinz(essin) Ada
Aufgabe:
Wegesuche
Handicaps:
Räume kosten
genaue Geldmenge ausgeben
versteckte Geschenke
Fallen
. . .
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 3
Rette Ada, dann mal los
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 4
Rette Ada naivpublic class RetteAda {
int[] Roomkosten = {1,2,3,4,5,6,7,8,9,10,11,12,13};
int[][] dooren = { {0,1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,1,0,1,0,0,0},
{0,0,0,1,0,0,0,0,0,0,0,0,0}, {1,0,0,0,0,0,0,1,0,1,0,0,0},
{1,0,0,0,0,0,0,1,0,1,0,0,0}, {1,0,0,0,0,0,0,1,0,1,0,0,0},
{1,0,0,0,0,0,0,1,0,1,0,0,0}, {1,0,0,0,0,0,0,0,0,1,0,0,0},
{1,0,0,0,0,0,0,0,0,1,0,0,0}, {1,0,0,0,0,0,0,1,0,0,0,0,0},
{1,0,0,0,0,0,0,1,0,1,0,0,0}, {1,0,0,0,0,0,0,1,0,1,0,0,0},
{1,0,0,0,0,0,0,1,0,1,0,0,0}};
int[] geschenkeOrt = {6, 1, 9};
String [] geschenkeNamen = {"Blumen", "Ringe", "Pralinen"};
int prinzOrt = 5;
int prinzessinOrt = 13;
float geld = 99;
int[] hatGeschenk = {0,0,0}; . . .
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 5
Objektorientierte (Daten)Modellierung
int [] reicht zur Datenmodellierung NICHT aus
Objekte für Räume, Personen, Geschenke , Fallen … einführen
Objektdiagramme zur Analyse von Beispielen
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 6
Gesamtvorgehen
1. Textuelle Szenarios
2. Objektdiagramme
3. Klassendiagramm
4. Implementierung des Datenmodells
5. Implementierung der Szenarios als JUnit Tests
6. Textuelle Algorithmen
7. Story Diagramme
8. Implementierung der Algorithmen
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 7
1. Textuelle Szenarios
Start: August steht in Raum 8 und hat noch 42 Goldstücke
1. August geht in Raum 9
2. August bezahlt 9 Goldstücke und hat jetzt noch 33 Goldstücke.
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 8
Rette Ada objektorientiert
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 9
Rette Ada objektorientiert
r1costs = 1
r2costs = 2
r3costs = 3
r4costs = 0
r7costs = 12
r5costs = 10
r10costs = 11
r11costs = 9
r8costs = 8
r12costs = 7
r13costs = 6
r6costs = 4
hof
doorp1
name = "Ada"
p2name = "Prinz"
budget = 99
door door door door
door
doordoor
doordoor
door
door
doordoor
in
in
r9costs = 5
door
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 10
Objekte klassifizieren
r1costs = 1
r2costs = 2
r3costs = 3
r4costs = 0
r7costs = 12
r5costs = 10
r10costs = 11
r11costs = 9
r8costs = 8
r12costs = 7
r13costs = 6
doorp1name = "Ada"
door door door door
doordoor
doordoor
door
door
doordoor
in
hof
p2name = "Prinz"budget = 99
door
in
r9costs = 5
door
r6costs = 4
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 11
Objekte klassifizieren
r1 :Roomcosts = 1
r2 :Roomcosts = 2
r3 :Roomcosts = 3
r4 :Roomcosts = 0
r7 :Roomcosts = 12
r5 :Roomcosts = 10
r10 :Roomcosts = 11
r11 :Roomcosts = 9
r8 :Roomcosts = 8
r12 Roomcosts = 7
r13 :Roomcosts = 6
doorp1 :Personname = "Ada"
door door door door
doordoor
doordoor
door
door
doordoor
in
hof :Room
p2 : Personname = "Prinz"budget = 99
door
in
r9 :Roomcosts = 5
door
r6 :Roomcosts = 4
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 12
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 13
Klassen als Baupläne für Objekte
Roomcosts : Integer
indoor
Giftname : String
in
Person
name : Stringbudget: Integer
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 14
Ausblick
Übung am Freitag um 14 Uhr im CIP Pool:
Szeanrios und Objektdiagramme selber entwerfen
Klassendiagramm ableiten
Vorlesung am Dienstag den 12.5.2009:
Klassen in Java implementieren
Objektstrukturen mit Java Programmen erzeugen
Freitag 15.5 und 22.5.Übung dazu
Dienstag 19.5 und 26.5. fallen aus
Freitag 29.5. Vorlesung im CIP Pool